this HackerRank SQL coding challengeを解決しようとしています。 Hackers
という列とhacker_id
とname
という列とSubmissions
という列とsubmission_date
、submission_id
、hacker_id
、およびscore
という列の2つのテーブルがあります。私は挑戦を解決するために提出した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
これは本当に私を混乱しました私の質問。通訳者はなぜこのエラーを出したのですか?それを解決するにはどうすればよいですか?