補習-1.集約関数
■社員の中で一番高い年齢を取得するSQLを考えてみて下さい。
>答え
SELECT MAX(AGE) FROM STAFF
MAX関数は集約関数と呼ばれるものの一つでで、指定した列の最大の値を返します。
集約関数はGROUP BY句を使用して、集約する単位を指定できます。
■男性と女性でそれぞれ一番高い年齢を取得するSQLを考えてみて下さい。
>答え
SELECT MAX(AGE), SEX FROM STAFF GROUP BY SEX
GROUP BY句に性別を指定することで、男女でそれぞれで最大年齢が取得できたと思います。
■年齢が一番高い人はを取得するSQLを考えて見て下さい。
>答え
SELECT * FROM STAFF WHERE
AGE = (
SELECT MAX(AGE) FROM STAFF
)
WHERE句の右側にはSELECT句のSQLを記載することができます。
これを副問い合わせ(サブクエリ)と言います。
SELECT MAX(AGE) FROM STAFFで最大の年齢を取得し、
その最大の年齢を条件にSTAFFテーブルを取得します。
もし最大の年齢が二人いる場合は2レコード取得されることになります。
また以下のSQLで1行目が最大の年齢の人としてもいいかもしれません。
SELECT * FROM STAFF ORDER BY AGE DESC
このSQLは年齢の高い人順に並べています。
■社員の男の人数と女の人数を取得するSQLを考えて下さい。
>答え
SELECT SEX, COUNT(*) FROM STAFF GROUP BY SEX