Я пытаюсь выполнить №8 по этой задаче, установленной из sqlzoo (https://sqlzoo.net/wiki/Window_LAG#LAG_using_a_JOIN).
Вопрос: «Для каждой страны, в которой было по крайней мере 1000 новых случаев в за один день, покажите дату пика числа новых случаев ".
В таблице covid указано количество случаев заболевания, смертей и выздоровлений за день по странам:
+-------------+-------------------------------+-----------+--------+-----------+
| Name | whn | confirmed | deaths | recovered |
+-------------+-------------------------------+-----------+--------+-----------+
| Afghanistan | Sun, 01 Mar 2020 00:00:00 GMT | 1 | 0 | 0 |
| Albania | Sun, 01 Mar 2020 00:00:00 GMT | 0 | 0 | 0 |
| Algeria | Sun, 01 Mar 2020 00:00:00 GMT | 1 | 0 | 0 |
+-------------+-------------------------------+-----------+--------+-----------+
В настоящее время у меня есть этот код:
SELECT c.name, DATE_FORMAT(c.whn,'%Y-%m-%d') as this, d.peak
from ( select tw.name, max(tw.confirmed-lw.confirmed) as peak
FROM covid tw LEFT JOIN covid lw ON
DATE_ADD(lw.whn, INTERVAL 1 DAY) = tw.whn
AND tw.name=lw.name
where tw.confirmed-lw.confirmed > 1000
group by tw.name) d
join covid as c
on d.name = c.name
group by name
, который дает мне каждую страну, дату и максимальное количество обращений. Однако дата показывает первый день для каждой страны, когда количество случаев превышает 1000. Как мне узнать дату, когда есть пиковое количество случаев?
| Name | this | peak |
|---------|------------|------|
| Austria | 2020-03-26 | 1321 |
| Belarus | 2020-04-20 | 1485 |
| Belgium | 2020-03-26 | 2454 |