Hi I'm on a school project and I can't find a solution to my problem. I have to do a query where I want the entire row of the table with the max value of the "Picco" column for all regions. The code written by me is:
SELECT
DELTA.`data`,
DELTA.`regione`,
DELTA.Differenza AS Picco
FROM (SELECT
dr.`data`,
dr.`regione`,
dr.`deceduti`,
dr.`deceduti`-LAG (dr.`deceduti`) OVER (PARTITION BY dr.`regione`) AS Differenza
FROM
`datareg` dr) AS DELTA;
I have this output:
| data | regione | Picco |
| 2020-03-08 18:00:00 | Abruzzo | 0 |
| 2020-03-09 18:00:00 | Abruzzo | 0 |
| 2020-03-10 18:00:00 | Abruzzo | 1 |
| 2020-03-11 17:00:00 | Abruzzo | 0 |
| 2020-03-12 17:00:00 | Abruzzo | 1 |
...
| 2020-04-03 17:00:00 | Abruzzo | 13 |
| 2020-04-04 17:00:00 | Abruzzo | 7 |
| 2020-04-05 17:00:00 | Abruzzo | 5 |
| 2020-04-06 17:00:00 | Abruzzo | 11 |
| 2020-04-07 17:00:00 | Abruzzo | 3 |
| 2020-04-08 17:00:00 | Abruzzo | 7 |
| 2020-04-09 17:00:00 | Abruzzo | 15 |->i want only this row for each region
| 2020-04-10 17:00:00 | Abruzzo | 4 |
..
I don't want all rows for each region, but only one with the max value for the 'Differenza' column. How can I do? Thank you for your time spent for me.
Thanks to all, I report the solution for my case:
SELECT
DELTA.`data`,
DELTA.`regione`,
MAX(DELTA.Differenza) AS Picco
FROM (SELECT
dr.`data`,
dr.`regione`,
dr.`deceduti`,
dr.`deceduti`-LAG (dr.`deceduti`) OVER (PARTITION BY dr.`regione`) AS Differenza
FROM
`datareg` dr
ORDER BY
dr.`deceduti`-LAG (dr.`deceduti`) OVER (PARTITION BY dr.`regione`) DESC) AS DELTA
GROUP BY
DELTA.regione;