15 Days of Learning SQL

  • + 0 comments

    SELECT ds.submission_date, (SELECT COUNT(DISTINCT hacker_id) FROM Submissions d WHERE d.submission_date = ds.submission_date AND d.hacker_id IN ( SELECT hacker_id FROM ( SELECT DISTINCT hacker_id, submission_date FROM Submissions WHERE submission_date BETWEEN '2016-03-01' AND '2016-03-15' GROUP BY hacker_id, submission_date ) AS unique_hackers ) ) AS unique_hackers, msh.hacker_id, h.name FROM (SELECT DISTINCT submission_date FROM Submissions WHERE submission_date BETWEEN '2016-03-01' AND '2016-03-15' ) ds LEFT JOIN ( SELECT submission_date, hacker_id, COUNT(submission_id) AS submission_count, RANK() OVER (PARTITION BY submission_date ORDER BY COUNT(submission_id) DESC, hacker_id ASC) AS rank FROM Submissions WHERE submission_date BETWEEN '2016-03-01' AND '2016-03-15' GROUP BY submission_date, hacker_id ) AS msh ON ds.submission_date = msh.submission_date AND msh.rank = 1 LEFT JOIN Hackers h ON msh.hacker_id = h.hacker_id ORDER BY ds.submission_date;