大学生春季运动会的数据库,保存了比赛信息的三个表如下:
运动员 sporter(运动员编号 sporterid,姓名name,性别 sex,所属系号 department),
项目 item(项目编号 itemid,名称 itemname,比赛地点 location), 成绩 grade(运动员编号 id,项目编号 itemid,积分 mark)。
用SQL语句完成在“体育馆”进行比赛的各项目名称及其冠军的姓名
SELECT
i.itemname, s.name
FROM
grade g,
(SELECT
itemid iid, MAX(mark) max
FROM
grade
WHERE
itemid IN (SELECT
itemid
FROM
item
WHERE
location = '体育馆')
GROUP BY itemid) temp,
item i,
sporter s
WHERE
g.itemid = temp.iid
AND g.mark = temp.max
AND temp.iid = i.itemid
AND s.sporterid = g.sporterid;
注:这道题需要注意:在使用group by的时候, select后面字段要么出现在group by当中要么包含在聚合函数里面, 常见的聚合函数