0

人口密度が最も低い部門を見つけようとしているので、次のことを行いました。

SELECT P.edname, MIN((P.total_area*1000)/P.total2011) AS "Lowest population density"
FROM eds_census2011 P
GROUP BY P.edname
HAVING COUNT (*)> 1

total_areaに 1000 を掛けて (つまり、平方メートルです)、総人口で割ります。除算 ( edname) と計算された人口密度を表示する 1 つのレコードのみが必要です(MIN((P.total_area*1000)/P.total2011))。代わりに、すべてのレコードを取得します - 並べ替えもされていません...

問題は、edname でグループ化する必要があることです。行を省略するGROUP BYHAVING、エラーが発生します。どんな助けでも大歓迎です!

4

2 に答える 2

1

試す

SELECT edname, (total_area*1000/total2011) density
  FROM eds_census2011
 WHERE (total_area*1000/total2011) = (SELECT MIN(total_area*1000/total2011) FROM eds_census2011)

SQLフィドル

LIMIT 1「1行だけ返す」ルールは、本当に必要な場合に使用することで簡単に適用できます

于 2013-05-09T23:56:26.240 に答える