SELECT, part 2

記事
IT・テクノロジー

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

Screenshot 2020-12-14 at 15.32.52.png


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

Screenshot 2020-12-14 at 16.15.21.png

Screenshot 2020-12-14 at 16.20.03.png



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

Screenshot 2020-12-14 at 16.37.14.png

Screenshot 2020-12-14 at 16.26.05.png



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

Screenshot 2020-12-14 at 16.59.18.png


(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

Screenshot 2020-12-14 at 17.37.54.png

Screenshot 2020-12-14 at 17.42.48.png



■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


Screenshot 2020-12-14 at 17.37.54.png

Screenshot 2020-12-14 at 18.07.23.png



(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

Screenshot 2020-12-14 at 18.39.42.png

Screenshot 2020-12-14 at 18.40.40.png



[Japanese]

SELECTについて その2

(1)データの集約

テーブルの内容を抽出するだけでなく、合計や平均などを求めて抽出することもできます。SQLは以下の通りです。
SELECT 集約関数(項目名) FROM テーブル名
(合計や平均などを求めるために使用する関数を集約関数といいます)

Screenshot 2020-12-14 at 15.32.15.png


(例)「成績」テーブルから全学生の数学の平均点を抽出するSQL
SELECT AVG(数学) FROM 成績

Screenshot 2020-12-14 at 15.52.15.png

Screenshot 2020-12-14 at 16.07.57.png


(例)「成績」テーブルから数学が80点以上の学生の人数を抽出するSQL
SELECT COUNT(*) FROM 成績 WHERE 数学 >= 80

Screenshot 2020-12-14 at 16.23.53.png

Screenshot 2020-12-14 at 16.26.05.png


抽出した結果、項目名がCOUNT(*)だと何の件数を表しているのか分からないので、新たに項目名を付けると良いです。下記SQLのように「AS」を使うと、項目名を付けられます。
SELECT COUNT(*) AS '数学80点以上の人数' FROM 成績 WHERE 数学 >= 80

Screenshot 2020-12-14 at 16.32.18.png


(2)グループによる問い合わせ

同一の値を持つデータを一つのグループとして扱うことができます。
SELECT 項目名や集約関数 FROM テーブル名 GROUP BY 項目名

GROUP BYの後ろの項目名は、どの項目についてグループ分けするのかを指定します。

(例)「成績」テーブルから、クラス毎の数学の平均点を抽出するSQL
SELECT クラス, AVG(数学) AS '数学平均点' FROM 成績 GROUP BY クラス

Screenshot 2020-12-14 at 17.14.16.png

Screenshot 2020-12-14 at 17.21.07.png



■グループ化したテーブルに対する条件指定
「GROUP BY」でグループ化したテーブルに対して、条件を指定して抽出することができます。
SELECT 項目名や集約関数名 FROM テーブル名
GROUP BY 項目名
HAVING グループに対する条件

(例)「成績」テーブルから、クラス毎の数学の平均点が75点以上のクラスとその平均点を抽出するSQL
SELECT クラス, AVG(数学) AS '数学平均点' FROM 成績
GROUP BY クラス
HAVING AVG(数学) >= 75

Screenshot 2020-12-14 at 17.14.16.png

Screenshot 2020-12-14 at 17.49.08.png



(3)抽出順の指定

データを抽出するときに、並び替えの指定ができます。
SELECT 項目名や集約関数名 FROM テーブル名
ORDER BY 第1キーとする項目名 並び順(昇順 または 降順),
                    第2キーとする項目名 並び順(昇順 または 降順), ・・・

並び順は、昇順なら「ASC」、降順なら「DESC」と指定します。
並び順を省略した場合は昇順に並びます。


(例)「成績」テーブルから、クラスと国語の点数をクラスの昇順に、さらに
同じクラス内では国語の点数の降順に抽出するSQL
SELECT クラス, 国語 FROM 成績
ORDER BY クラス ASC, 国語 DESC

Screenshot 2020-12-14 at 18.19.33.png

Screenshot 2020-12-14 at 18.21.46.png

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す