2016-04-26 101 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