[SQL ] 關於聚合函數,和計算週數的兩個問題
資料庫名稱:MySQL
資料庫版本:
內容/問題描述:
大家好,小弟這邊有兩個問題想請教。
第一個問題關於聚合函數,我有一個資料表"成績",有三個欄位 課程 學生 分數,
我想選出每個課程中最高分的人:
select 課程, max(分數)
from 成績
group by 課程
但這樣我只能得到每個課程對應到的最高分,有簡便辦法得到該分數所對應到的學生嗎?
現在我只想得到這種作法:
select 學生
from 成績
where (課程, 分數) in (select 課程, max(分數) from 成績 group by 課程)
==========================================================================
第二個問題關於生日,
我有一個資料表"學生資料",裡面有學生的生日(年-月-日),
如果要判斷學生是否在這週生日要怎麼做呢?
如果是判斷這個月的話很簡單,但不知道怎麼去判斷生日是否和今天在同一週@@a
以上兩個問題麻煩大家幫解了,感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.16.184
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1559386672.A.E52.html
推
06/01 21:28,
5年前
, 1F
06/01 21:28, 1F
感謝回覆
可是用week函數有個問題是,生日那年的周數,和今年的周數不一定相同欸。
舉例:小明2000-06-04生日,week('2000-06-04')=23
今天是2019-06-02, week('2019-06-02')=22
我們看年曆知道今年的06-02和06-04是同週,會說小明這週生日;
但用week()函數做出來就可能會出錯了? (以上皆以星期日為一週第一天做舉例)
小弟就是用了week()發現這個問題,所以上來求救QQ
推
06/02 07:55,
5年前
, 2F
06/02 07:55, 2F
group by 課程, 學生
這樣不就會每個課程、每個學生都抓出一個max()了嗎?
像A、B、C三門課,各有10個學生修課,我想抓出三個成績,分別就是A、B、C的最高分。
e大的作法應該會變成跑出3*10=30個成績?
※ 編輯: sagwow (111.250.16.136), 06/02/2019 09:48:40
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章