我想解決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
這確實讓我感到困惑,因爲我沒有使用聚合函數我的查詢。爲什麼口譯員會給出這個錯誤,我應該考慮如何解決這個錯誤?