Как я могу построить SQL, чтобы найти MAX продуктов с разными датами и временем для каждого из них? - PullRequest
0 голосов
/ 11 декабря 2018

Пожалуйста, мне нужен SQL, чтобы найти МАКС. QNTT для каждого продукта и знать дату и час.

+-----------+--------+-----------+-----------+
| Product   |  QNTT  |   date    |    hour   |
+-----------+--------+-----------+-----------+
|       AAA |     31 | 28-nov-18 |     09    |
|       AAA |     21 | 28-nov-18 |     10    |
|       AAA |     52 | 28-nov-18 |     11    |
|       AAA |     11 | 28-nov-18 |     12    |
|       AAA |     15 | 29-nov-18 |     09    |
|       AAA |     19 | 29-nov-18 |     10    |
|       AAA |     22 | 29-nov-18 |     11    |
|       AAA |     33 | 29-nov-18 |     12    |
|       AAA |     55 | 30-nov-18 |     09    |
|       AAA |     42 | 30-nov-18 |     10    |
|       AAA |     31 | 30-nov-18 |     11    |
|       AAA |     21 | 30-nov-18 |     12    |
|       BBB |     31 | 28-nov-18 |     09    |
|       BBB |     21 | 28-nov-18 |     10    |
|       BBB |     12 | 28-nov-18 |     11    |
|       BBB |     58 | 28-nov-18 |     12    |
|       BBB |     15 | 29-nov-18 |     09    |
|       BBB |     19 | 29-nov-18 |     10    |
|       BBB |     22 | 29-nov-18 |     11    |
|       BBB |     33 | 29-nov-18 |     12    |
|       BBB |     43 | 30-nov-18 |     09    |
|       BBB |     42 | 30-nov-18 |     10    |
|       BBB |     51 | 30-nov-18 |     11    |
|       BBB |     21 | 30-nov-18 |     12    |
+-----------+--------+-----------+-----------+

Ответ на SQL, который я хочу, - это МАКС (QNTT) продуктов:

+-----------+--------+-----------+-----------+
| Product   |  QNTT  |   date    |    hour   |
+-----------+--------+-----------+-----------+
|       AAA |     55 | 30-nov-18 |     09    |
|       BBB |     58 | 28-nov-18 |     12    |
+-----------+--------+-----------+-----------+

Я могу найти результат без времени и даты:

SELECT
    Product, max(QNTT)
FROM
    TABLE 
WHERE  
    Month(DATE) = 11 AND YEAR(DATE) = 2018 
AND
    Product <> 'AAAB' 
AND
    Substr(Product, 1, 3) IN ('AAA','BBB') 
AND
    hour<= 18 
AND
    Day(DATE) > 13   
GROUP BY
    Product  
ORDER BY
    Product, QNTT DESC

, но мне нужны Дата и Час, чтобы знать, когда были максимальные числа для каждого месяца.

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете использовать subquery с group by Product как:

select *
  from tab 
 where ( Product, QNTT ) in
(select Product, max(QNTT)
   from tab
  group by Product ) t
...