SQL
まあ曖昧なところもあるのでちゃんと口頭で言えるくらいには理解する
グループ化
集合関数
引数に指定したカラムの値を集計し、結果を返す。
WHERE条件が指定されている場合、その条件に沿って抽出したレコードの結果を返す
グループ
カラム別の、集合関数の結果を取得するときに使用する。
jobカラム別に、avg(age) とかsum(salaly)とかを求めることができる
複数カラムの時は、GROUP BYの後ろにカンマ区切りで表記を記述する。
jobのageごとの、avg(salary)とか。
グループ化したテーブルの条件抽出
HAVING句は集計関数に条件をつけたいときに使用する。
jobのavg(age) having avg(age) >= 20といった具合
empテーブルから、SAL(給料)の最大値が2000以上のJOBとSAL(最小、最大、平均)を表示する
code:sql
select job, min(sal), max(sal), avg(sal)
from emp
group by job
having max(sal) >= 2000;
かあスレでも試せる
code:sql
-- ユーザー別の投稿件数を取得する。group byはselectで指定していない値でも構わない
SELECT count(*)
FROM posts
group by user_id
having count(*) > 100;
サブクエリ
副問い合わせとも呼ぶ
カッコ内で定義したselect文などで仮想テーブルを作って、そのテーブルと結合した結果を出せる