2016-03-03 2 views
0

Я хотел бы спросить, как выбрать 3 наивысших значения и суммировать их в sqlite.выберите и суммируйте 3 самых высоких значения из id sqlite

Моя таблица выглядит следующим образом:

ID   SKU   Price   
    -----  -----  ----- 
    John   Product1 100 
    John   Product2 10 
    Steven  Product3 20 
    Rachel  Product4 100 
    Jack   Product5 10 
    John   Product6 10 
    John   Product7 10 

Простое решение будет заключаться в следующем: выберите Id, GROUP_CONCAT (SKU), сумма (цена) от my_table группы по идентификатору;

Это даст мне общую картину, но что, если я хочу включить только три самых высоких значения из каждого идентификатора и, конечно, суммировать эти три значения? Таким образом, конечный результат будет выглядеть примерно так:

 ID   SKU        Price   
     -----  -----       ----- 
     John   Product1,Product2,Product6  120 
     Steven  Product3       20 
     Rachel  Product4       100 
     Jack   Product5       10 

ответ

1

Вы можете использовать этот код (смотри пример на sqlfiddle):

select ID, GROUP_CONCAT(SKU), SUM(PRICE) 
from test t 
where ID || '-' || SKU || '-' || Price in 
    (
     select ID || '-' || SKU || '-' || Price 
     from test t2 
     where ID = t.ID 
     order by 
       Price desc 
     limit 3 
    ) GROUP BY t.ID 
Смежные вопросы