我想解决this HackerRank SQL coding challenge。我们有两个表格,一个名为Hackers
,列为hacker_id
和name
,另一个表格为Submissions
,列为submission_date
,submission_id
,hacker_id
和score
。MySQL解释器调用没有聚合函数的查询聚合查询
一个查询我提交解决面临的挑战是:
SELECT es.date, es.count, m.hacker_id, m.name, m.score
FROM
(
SELECT submission_date as date, COUNT(hacker_id) as count
FROM (
SELECT submission_date, COUNT(submission_id) as count, hacker_id
FROM Submissions
GROUP BY submission_date, hacker_id
) f
HAVING count >=1
) es
JOIN (
SELECT s.submission_date as date, s.hacker_id, h.name, s.score
FROM Submissions s
JOIN Hackers h ON h.hacker_id = s.hacker_id
JOIN (SELECT submission_date, MAX(score) as score FROM Submissions GROUP BY submission_date) foo ON foo.submission_date = s.submission_date
WHERE s.score = foo.score
) m
ON es.date = m.date
ORDER BY es.date
不过,我回来了错误:
ERROR 1140 (42000) at line 1: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'f.submission_date'; this is incompatible with sql_mode=only_full_group_by
这确实让我感到困惑,因为我没有使用聚合函数我的查询。为什么口译员会给出这个错误,我应该考虑如何解决这个错误?