从id sqlite中选择并汇总3个最高值

时间:2016-03-03 21:56:37

标签: sqlite

我想问一下如何选择3个最高值并在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从my_table group中选择Id,group_concat(SKU),sum(price);

这会给我整体情况,但如果我只想从每个id中包含三个最高值并且当然将这三个值相加,该怎么办?所以最终结果看起来像这样:

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

1 个答案:

答案 0 :(得分: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