「達人に学ぶSQL徹底指南書」(著者:ミック、発行:翔泳社)の
第1部、1-4 HAVING句の力 「HAVING句で自己結合:メジアンを求める」
の内容でつまずいています。
テーブル名:Graduates
列はincomeのみ、10行。
|income|
10,000
10,000
10,000
15,000
15,000
20,000
20,000
20,000
30,000
400,000
以下のsqlで、なぜ「Graduatesの5列目の値+6列目の値/2」
を求めることができるのかわかりません。
SELECT AVG(DISTINCT income)
FROM (SELECT T1.income
FROM Graduates T1, Graduates T2
GROUP BY T1.income
--S1の条件
HAVING SUM(CASE WHEN T2.income >= T1.income THEN 1
ELSE 0 END) >= COUNT() / 2
--S2の条件
AND SUM(CASE WHEN T2.income <= T1.income THEN 1
ELSE 0 END) >= COUNT() / 2) TMP;
Graduatesを2つクロス結合してT1.incomeでグループ化した後、
HAVING句の中でやっていることの目的がわかりません。
(文法事項はわかりますが、目的がわかりません。)
「達人に学ぶSQL徹底指南書」を読んだことのある方がいたら
お手数ですがヒントをお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。