2016-03-03 59 views
0

我想問如何選擇3個最高值並在sqlite中求和。從ID sqlite中選擇並求和3個最高值

我的表看起來像這樣:

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;

這會給我的整體情況,但如果我想只包含來自每個ID的三個最高值,當然要加上這三個值呢?所以,最終的結果會是這個樣子:

 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