【发布时间】:2022-01-11 09:57:23
【问题描述】:
问题:
Julia 举办了为期 15 天的 SQL 学习竞赛。比赛开始日期为 2016 年 3 月 1 日,结束日期为 2016 年 3 月 15 日。
编写查询以打印每天至少提交的唯一黑客总数(从比赛的第一天开始),并找到
hacker_id和每天提交最多的黑客的姓名.如果不止一个这样的黑客有提交的最大数量,打印最低的hacker_id。查询应打印比赛每一天的此信息,按日期排序。输入格式
下表包含比赛数据:
Hackers:hacker_id是黑客的id,name是黑客的名字。Submissions:submission_date是提交的日期,submission_id是提交的id,hacker_id是提交的黑客的id,score是提交的分数。示例输入
对于以下示例输入,假设比赛的结束日期是 2016 年 3 月 6 日。Hackers Table
Submissions Table样本输出
2016-03-01 4 20703 Angela 2016-03-02 2 79722 Michael 2016-03-03 2 20703 Angela 2016-03-04 2 20703 Angela 2016-03-05 1 36396 Frank 2016-03-06 1 20703 Angela
到目前为止,我的查询如下:
SELECT DISTINCT
@s := submission_date,
COUNT(DISTINCT hacker_id),
@h := (SELECT hacker_id
FROM (SELECT DISTINCT
hacker_id,
@ch := COUNT(hacker_id)
FROM Submissions
WHERE submission_date=@s
ORDER BY @ch
GROUP BY hacker_id DESC) x
LIMIT 1),
@n:=(SELECT name FROM Hackers WHERE hacker_id=@h)
FROM
Submissions
WHERE 1;
好吧,这个查询失败了'SQL sytax error'{MYSQL},但是没有GROUP BY,这个查询被拒绝,因为激活了 only-full-group-by 模式。
错误信息是:
第 5 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'GROUP BY hacker_id DESC) x LIMIT 1),@n:=(SELECT name FROM Hackers WHERE hacker_i' 附近使用正确的语法
【问题讨论】:
-
MySQL SQL Server - 请更正您的标签。
-
示例输入 提供示例输入,从而将示例输出显示为完整的 CREATE TABLE + INSERT INTO 脚本。