SELECT, part 2
(1)Aggregate the data
You can also calculate totals, averages, etc. in the table and pick out them with
"SELECT". The SQL is as follows.
SELECT FunctionName(Item) FROM TableName
For example, the SQL to pick out the math average score of all students from
the "Grade" table is as follows.
SELECT AVG(Math) FROM Grade
For example, the SQL to pick out the number of students with a math score
not less than 80 from the "Grade" table is as follows.
SELECT COUNT(*) FROM Grade WHERE Math >= 80
As a result of executing the SQL, other people don't know if the item name is
"COUNT (*)". In this case, you might want to give a new item name. You can
give the item name by using "AS" as follows.
SELECT COUNT(*) AS 'Number of students with not less than 80 points in
math' FROM Grade WHERE Math >= 80
(2)Group and pick out
It is possible to handle the data owning the same value like one group.
SELECT Item or FunctionName FROM TableName GROUP BY Item
The item after "GROUP BY" specifies the item to group.
For example, the SQL to pick out the math average score for each class from
the "Grade" table is as follows.
SELECT Class, AVG(Math) AS 'Math average score' FROM Grade
GROUP BY Class
■Specify the conditions for grouped the table
You can specify the conditions from the table grouped by "GROUP BY" and
pick out the data.
SELECT Item or FunctionName FROM TableName
GROUP BY Item
HAVING Conditions
For example, the SQL to pick out the classes with a math average score
not less than 75 points for each class from the "Grade" table is as follows.
SELECT Class, AVG(Math) AS 'Math average score' FROM Grade
GROUP BY Class
HAVING AVG(Math) >= 75
(3)Specify the order
It is possible to specify the order when you pick out the data.
SELECT Item or FunctionName FROM TableName
ORDER BY 1st item Order(ascending order or descending order),
2nd item Order(ascending order or descending order), ・・・
Specify "ASC" for ascending order and "DESC" for descending order.
If the order is omitted, it will be sorted in ascending order.
For example, pick out the classes and the language scores from the "Grade"
table. At that time, arrange the classes in ascending order and the language
scores in descending order. The SQL is as follows.
SELECT Class, Language FROM Grade
ORDER BY Class ASC, Language DESC
[Japanese]
SELECTについて その2
(1)データの集約
テーブルの内容を抽出するだけでなく、合計や平均などを求めて抽出することもできます。SQLは以下の通りです。
SELECT 集約関数(項目名) FROM テーブル名
(合計や平均などを求めるために使用する関数を集約関数といいます)
(例)「成績」テーブルから全学生の数学の平均点を抽出するSQL
SELECT AVG(数学) FROM 成績
(例)「成績」テーブルから数学が80点以上の学生の人数を抽出するSQL
SELECT COUNT(*) FROM 成績 WHERE 数学 >= 80
抽出した結果、項目名がCOUNT(*)だと何の件数を表しているのか分からないので、新たに項目名を付けると良いです。下記SQLのように「AS」を使うと、項目名を付けられます。
SELECT COUNT(*) AS '数学80点以上の人数' FROM 成績 WHERE 数学 >= 80
(2)グループによる問い合わせ
同一の値を持つデータを一つのグループとして扱うことができます。
SELECT 項目名や集約関数 FROM テーブル名 GROUP BY 項目名
GROUP BYの後ろの項目名は、どの項目についてグループ分けするのかを指定します。
(例)「成績」テーブルから、クラス毎の数学の平均点を抽出するSQL
SELECT クラス, AVG(数学) AS '数学平均点' FROM 成績 GROUP BY クラス
■グループ化したテーブルに対する条件指定
「GROUP BY」でグループ化したテーブルに対して、条件を指定して抽出することができます。
SELECT 項目名や集約関数名 FROM テーブル名
GROUP BY 項目名
HAVING グループに対する条件
(例)「成績」テーブルから、クラス毎の数学の平均点が75点以上のクラスとその平均点を抽出するSQL
SELECT クラス, AVG(数学) AS '数学平均点' FROM 成績
GROUP BY クラス
HAVING AVG(数学) >= 75
(3)抽出順の指定
データを抽出するときに、並び替えの指定ができます。
SELECT 項目名や集約関数名 FROM テーブル名
ORDER BY 第1キーとする項目名 並び順(昇順 または 降順),
第2キーとする項目名 並び順(昇順 または 降順), ・・・
並び順は、昇順なら「ASC」、降順なら「DESC」と指定します。
並び順を省略した場合は昇順に並びます。
(例)「成績」テーブルから、クラスと国語の点数をクラスの昇順に、さらに
同じクラス内では国語の点数の降順に抽出するSQL
SELECT クラス, 国語 FROM 成績
ORDER BY クラス ASC, 国語 DESC