Difference between revisions of "Using GROUP BY and HAVING./ja"

From SQLZOO
Jump to: navigation, search
 
Line 9: Line 9:
  
 
<code>HAVING</code> 節(の条件)は表示するグループを取り除く。
 
<code>HAVING</code> 節(の条件)は表示するグループを取り除く。
 +
 
<code>WHERE</code> 節(の条件)は行(レコード)を集計する前に取り除く。
 
<code>WHERE</code> 節(の条件)は行(レコード)を集計する前に取り除く。
 +
 
<code>HAVING</code> 節は集計後(の結果を使って)、取り除く。
 
<code>HAVING</code> 節は集計後(の結果を使って)、取り除く。
  
<code>ORDER BY</code> 節は特定の列を参照して場所を決める。
+
<code>ORDER BY</code> 節がある場合、該当する場所の列(フィールド)を参照して並べ替える。
  
 
<div class='qu'>
 
<div class='qu'>
For each continent show the number of countries:
+
各大陸の国を表示する:
 
  world('''name''', continent, area, population, gdp)
 
  world('''name''', continent, area, population, gdp)
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 31: Line 33:
  
 
<div class='qu'>
 
<div class='qu'>
For each continent show the total population:
+
各大陸の総人口を表示する:
 
  world('''name''', continent, area, population, gdp)
 
  world('''name''', continent, area, population, gdp)
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
Line 47: Line 49:
  
 
<div class='qu'>
 
<div class='qu'>
WHERE and GROUP BY.
+
WHERE GROUP BY
The WHERE filter takes place before the aggregating function.
+
 
For each relevant continent show the number of countries that has a population
+
WHERE は集計関数が働く前にレコードを取り除く。
of at least 200000000.
+
 
 +
最低でも200000000人の人口の国の数を関連する大陸ごとに表示する。
 +
 
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT continent, COUNT(name)
 
SELECT continent, COUNT(name)
Line 67: Line 71:
  
 
<div class='qu'>
 
<div class='qu'>
GROUP BY and HAVING.
+
GROUP BY HAVING
The HAVING clause is tested after the GROUP BY. You can test the aggregated
+
 
values with a HAVING clause.
+
HAVING 節は GROUP BY の後でチェックされる。
Show the total population of those continents with a total population of at
+
 
least half a billion.
+
集計結果をHAVING 節でチェックできる。
 +
.
 +
総人口が500000000人より大きな大陸を総人口と共に表示する。
 +
.
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
 
SELECT continent, SUM(population)
 
SELECT continent, SUM(population)

Latest revision as of 19:08, 18 April 2018

Language:Project:Language policy 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