Для каждой группы TS
есть случайное количество строк, которые имеют разные Name
, и это Count
.Я хотел бы сделать следующее:
- Получить последнюю группу TIMESTAMP с заказом NAME desc на
Count
.Для более чем 3 строк в последней группе остаток суммируется на Count
и переименовывается в «Другое». - Для каждой группы
TIMESTAMP
найдите строки, имеющие NAME
на шаге 1. - Если не найдено, 0 дополняется как
Count
для пары в определенной группе.
Посмотрите на иллюстрацию:
TS | Name | Count
=============================
1552286160 | Apple | 7
1552286160 | Orange | 8
1552286160 | Grape | 8
1552286160 | Pear | 9
1552286160 | Kiwi | 10
1552286160 | Berry | 3
1552286160 | Carrot | 2
1552286100 | Apple | 10
1552286100 | Orange | 12
1552286100 | Grape | 14
1552286100 | Pear | 16
1552286100 | Kiwi | 9
1552286040 | Apple | 4
1552285980 | Peach | 8
С этим набором данныхЯ хотел бы иметь следующее:
TS | Name | Count
=============================
1552286160 | Kiwi | 10
1552286160 | Pear | 9
1552286160 | Grape | 8
1552286160 | Other | 8 + 7 + 3 + 2
1552286100 | Kiwi | 9
1552286100 | Pear | 16
1552286100 | Grape | 14
1552286100 | Other | 10 + 9
1552286040 | Kiwi | 0
1552286040 | Pear | 0
1552286040 | Grape | 0
1552286040 | Other | 4
1552286040 | Kiwi | 0
1552286040 | Pear | 0
1552286040 | Grape | 0
1552286040 | Other | 8
Это на самом деле расширенное решение, полученное из MySQL top-N ранжирования и суммирования остальной части той же группы Однако решение несгруппируйте каждую TS
группу с теми же строками из последней TS
группы, в данном случае TS=1552286160
.
Подготовленная мной скрипта SQL находится здесь: http://sqlfiddle.com/#!9/4e13004/1
Спасибо, если у вас есть идеи.