Using GROUP BY and HAVING./ja

From SQLZOO
Jump to: navigation, search
言語:Project:Language policy [[:{{#invoke:String|sub|Using GROUP BY and HAVING./ja
 |1
 |Expression error: Unrecognized punctuation character "{".
}}|English]]

世界の国のプロフィール

GROUP BYHAVING

GROUP BY 節で SUMCOUNT のような集計関数を使うと、それぞれのグループに共通の値になる。 GROUP BY continent を指定すると、異なる値のcontinentが1行づつ表示される。 continent以外のすべての列(フィールド)は SUMCOUNT などの集計関数で1行にまとめる必要がある。

HAVING 節(の条件)は表示するグループを取り除く。

WHERE 節(の条件)は行(レコード)を集計する前に取り除く。

HAVING 節は集計後(の結果を使って)、取り除く。

ORDER BY 節がある場合、該当する場所の列(フィールド)を参照して並べ替える。

各大陸の国を表示する:

world(name, continent, area, population, gdp)
SELECT continent, COUNT(name)
  FROM world
 GROUP BY continent
SELECT continent, COUNT(name)
  FROM world
 GROUP BY continent

各大陸の総人口を表示する:

world(name, continent, area, population, gdp)
SELECT continent, SUM(population)
  FROM world
 GROUP BY continent
SELECT continent, SUM(population)
  FROM world
 GROUP BY continent

WHERE と GROUP BY

WHERE は集計関数が働く前にレコードを取り除く。

最低でも200000000人の人口の国の数を関連する大陸ごとに表示する。

SELECT continent, COUNT(name)
  FROM world
 WHERE population>200000000
 GROUP BY continent
SELECT continent, COUNT(name)
  FROM world
 WHERE population>200000000
 GROUP BY continent

GROUP BY と HAVING

HAVING 節は GROUP BY の後でチェックされる。

集計結果をHAVING 節でチェックできる。 . 総人口が500000000人より大きな大陸を総人口と共に表示する。 .

SELECT continent, SUM(population)
  FROM world
 GROUP BY continent
HAVING SUM(population)>500000000
SELECT continent, SUM(population)
  FROM world
 GROUP BY continent
HAVING SUM(population)>500000000