2016-04-26 89 views
1

我有這樣SQL創建基於內容

saledate | user_id | Purchase or Return | trans_amount 
2016/4/1 | 001  | Purchase   | 100 
2016/4/1 | 001  | Return    | 200 
2016/4/2 | 002  | Purchase   | 300 
2016/4/2 | 003  | Purchase   | 200 
2016/4/2 | 004  | Return    | 100 
... 

SQL表如何運行一個查詢,更改表,以便它看起來像這樣的新列:

saledate | transaction_type | number of unique user_ids | total_amount 
2016/4/1 | Purchase only | 20      | 1000 
2016/4/1 | Return only  | 30      | 1000 
2016/4/1 | Purchase_return | 40      | 2000 
... 

謝謝!

+1

標籤與正在使用的數據庫你的問題。 –

回答

0

你將需要聚合的兩個級別,我想:

select salesdate, transaction_type, 
     count(*) as NumUsers, sum(amount) as total_amount 
from (select user_id, salesdate, 
      (case when max(PurchaseOrReturn) = min(PurchaseOrReturn) 
        then max(PurchaseOrReturn) else 'Both' 
       end) as transaction_type, 
      sum(trans_amount) as amount 
     from t 
     group by user_id, salesdate 
    ) t 
group by salesdate, transaction_type 
order by salesdate, transaction_type; 
+0

謝謝Gordon的回答。這部分的情況下,當最大(PurchaseOrReturn)=分鐘(PurchaseOrReturn) 然後最大(PurchaseOrReturn)其他'兩' 結束'是我無法弄清楚。謝謝! – RebeccaLu