作者sagwow (不是我)
看板Database
标题[SQL ] 关於聚合函数,和计算周数的两个问题
时间Sat Jun 1 18:57:49 2019
资料库名称:MySQL
资料库版本:
内容/问题描述:
大家好,小弟这边有两个问题想请教。
第一个问题关於聚合函数,我有一个资料表"成绩",有三个栏位 课程 学生 分数,
我想选出每个课程中最高分的人:
select 课程, max(分数)
from 成绩
group by 课程
但这样我只能得到每个课程对应到的最高分,有简便办法得到该分数所对应到的学生吗?
现在我只想得到这种作法:
select 学生
from 成绩
where (课程, 分数) in (select 课程, max(分数) from 成绩 group by 课程)
==========================================================================
第二个问题关於生日,
我有一个资料表"学生资料",里面有学生的生日(年-月-日),
如果要判断学生是否在这周生日要怎麽做呢?
如果是判断这个月的话很简单,但不知道怎麽去判断生日是否和今天在同一周@@a
以上两个问题麻烦大家帮解了,感恩
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.250.16.184
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1559386672.A.E52.html
1F:推 cutekid: MySql 有 week(date) function 可以用喔 06/01 21:28
感谢回覆
可是用week函数有个问题是,生日那年的周数,和今年的周数不一定相同欸。
举例:小明2000-06-04生日,week('2000-06-04')=23
今天是2019-06-02, week('2019-06-02')=22
我们看年历知道今年的06-02和06-04是同周,会说小明这周生日;
但用week()函数做出来就可能会出错了? (以上皆以星期日为一周第一天做举例)
小弟就是用了week()发现这个问题,所以上来求救QQ
2F:推 evilove: select 课程 学生 max(分数).. group by 课程 学生 06/02 07:55
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