作者criky (學習中)
看板Database
標題[討論] SQL子查詢
時間Thu Apr 27 00:27:57 2017
剛才板友怎麼還沒問完就刪掉了 XD
可能是自己試出來了吧~
總之試了一下就PO上來當練習&參考
--create table
create table score(
pname varchar(10),
subject varchar(10),
subscore integer,
id varchar(10))
;
--insert data
insert into score (pname, subject, subscore, id)
values
('張三','數學' , 90 , 1) ,
('張三','語文' , 50 , 2) ,
('張三','地裡' , 40 , 3) ,
('李四','語文' , 55 , 4) ,
('李四','政治' , 45 , 5) ,
('王五','政治' , 30 , 6) ,
('造六','地裡' , 90 , 7) ,
('造六','國文' , 85 , 8) ,
('造六','歷史' , 100 , 9) ;
--select data: max subscore group by pname
select b.pname, subject, subscore, id from score b
join
(select pname, max(subscore) mx
from score
group by pname
) a
on a.pname = b.pname
and a.mx = b.subscore
OUTPUT
pname subject subscore id
造六 歷史 100 9
張三 數學 90 1
李四 語文 55 4
王五 政治 30 6
4/29更新
另一種寫法 ROW_NUMBER語法 不過沒有比較簡單 XD
SELECT pname, subject, subscore, id
from
(
SELECT pname, subject, subscore, id ,
ROW_NUMBER() OVER (
partition by pname
ORDER BY pname,subscore desc) N from score
) A
where A.N=1
OUTPUT
pname subject subscore id
王五 政治 30 6
李四 語文 55 4
張三 數學 90 1
造六 歷史 100 9
--
不推▃▃▃▃▃▃▃▃推嗎 ▲ ◤ ●\ ◤ ●\ ▎ 不推嗎不推嗎
不推 在這邊推個文, ◣嗎 / ● ● \ ▲ 不推嗎不推嗎
不推 就能實現願望喔! 嗎 ▊/ ◣ ◤ ◣ ◤ \ ▏ 推嗎不推嗎
不推嗎不推嗎不推嗎◥█嗎 │ │ ▍ 推嗎不推嗎
不推嗎不推嗎不推嗎不◥嗎▊ \ │ ▎ 嗎不推嗎
不推嗎不推嗎不推嗎不推嗎 \ ︶︶ 好人-改 / ▏ 嘿~嘿~嘿~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.147.29.46
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1493224081.A.682.html
推 dogwu5566: 對,我自己試出來了XD,原來where跟in後面的條件是可以 04/27 04:22
→ dogwu5566: 成對的,這是我最後的語法,select * from score where 04/27 04:23
→ dogwu5566: (pname,subscore) in (select pname,max(subscore) 04/27 04:23
→ dogwu5566: from score group by pname); 04/27 04:24
→ dogwu5566: 不過我還沒學到join關鍵字,我會好好研究一下,感謝! 04/27 04:25
推 clonk: 沒看到原來的問題 如果是mysql只要這樣就好了 04/28 15:22
→ clonk: select pname,subject,max(subscore) as subscore,id 04/28 15:23
→ clonk: from score group by pname order by subscore desc; 04/28 15:23
※ 編輯: criky (27.147.29.46), 04/29/2017 10:22:53
→ dogwu5566: 題目有說不得使用 order by 04/29 11:45
→ criky: 喔,那後來補充的就不行了~~ 04/29 15:18