Re: [SQL ] 關於聚合函數,和計算週數的兩個問題

看板Database (資料庫)作者 (可愛小孩子)時間5年前 (2019/06/03 15:05), 編輯推噓3(306)
留言9則, 2人參與, 5年前最新討論串2/4 (看更多)
第一題: select t1.* from 成績 t1 inner join ( select 課程,max(分數) as 分數,from 成績 group by 課程 ) t2 on t1.課程 = t2.課程 and t1.分數 = t2.分數 第二題: create table person (birthday date); insert into person values ('2000-06-01'),('2000-06-02'),('2000-06-03'), ('2000-06-04'),('2000-06-05'),('2000-06-06'), ('2000-06-07'),('2000-06-08'),('2000-06-09'); select * from person where datediff(date_format(birthday,concat(year(curdate()),'-%m-%d')),curdate()) = (weekday(date_format(birthday,concat(year(curdate()),'-%m-%d'))) + 1) % 7 - (weekday(curdate()) + 1) % 7; 說明: 1. 先將 birthday 調整到今年日期 2. 判斷「日期差距」是否等於「weekday差距」 註: (weekday(date) + 1) % 7 是把星期日 ~ 星期六調成 0 ~ 6 3. 這樣即使跨年,也可以判斷是否在同一週 網址: https://bit.ly/2JT5DQ8 ※ 引述《sagwow (不是我)》之銘言: : 資料庫名稱:MySQL : 資料庫版本: : 內容/問題描述: : 大家好,小弟這邊有兩個問題想請教。 : 第一個問題關於聚合函數,我有一個資料表"成績",有三個欄位 課程 學生 分數, : 我想選出每個課程中最高分的人: : select 課程, max(分數) : from 成績 : group by 課程 : 但這樣我只能得到每個課程對應到的最高分,有簡便辦法得到該分數所對應到的學生嗎? : 現在我只想得到這種作法: : select 學生 : from 成績 : where (課程, 分數) in (select 課程, max(分數) from 成績 group by 課程) : ========================================================================== : 第二個問題關於生日, : 我有一個資料表"學生資料",裡面有學生的生日(年-月-日), : 如果要判斷學生是否在這週生日要怎麼做呢? : 如果是判斷這個月的話很簡單,但不知道怎麼去判斷生日是否和今天在同一週@@a : 以上兩個問題麻煩大家幫解了,感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.170.107.108 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1559545536.A.D64.html

06/06 22:33, 5年前 , 1F
第二個問題用 WEEK 來算不是比較好嗎?
06/06 22:33, 1F

06/06 22:34, 5年前 , 2F
Select * from person where week(生日) = week(now())
06/06 22:34, 2F

06/06 22:35, 5年前 , 3F
第一題我現在會用 rank() 或是 row_number()
06/06 22:35, 3F

06/06 22:55, 5年前 , 4F
啊,原原po 講到用 week 的問題,我疏忽了,sorry
06/06 22:55, 4F

06/06 23:08, 5年前 , 5F
跨年的那一週,用week也沒辦法解
06/06 23:08, 5F

06/06 23:26, 5年前 , 6F
試了一下,搭配使用 date_add, dayofweek, curdate 可以查
06/06 23:26, 6F

06/06 23:26, 5年前 , 7F
出今日相關的本週啟抑日期,應該有用
06/06 23:26, 7F

06/07 08:11, 5年前 , 8F
讚喔,要不要回一篇分享一下做法(Y)
06/07 08:11, 8F

06/07 09:04, 5年前 , 9F
我發現我也沒解決跨年同一週的問題XD
06/07 09:04, 9F
文章代碼(AID): #1SzCR0ra (Database)
文章代碼(AID): #1SzCR0ra (Database)