2015-09-06 112 views
0

我在表中有這3個字段。多個選擇單組按查詢

trans_date | transaction_type | client_id

我需要的是每個日期的transaction_types條目數。例如,

日期:2015年7月7日總計數:6 TRANSACTION_TYPE 1個計數:3,
TRANSACTION_TYPE 2數:1,TRANSACTION_TYPE 3計數:2等....

我需要這個按日期分組的所有日期。

這是我當前的查詢,

SELECT count(id) as total_count, 
    (select count(id) where transaction_type=1) as type1_count, 
    (select count(id) where transaction_type=2) as type2_count, 
    (select count(id) where transaction_type=3) as type3_count 
FROM tblTransactions 
where client_id=1 
GROUP BY date(trans_date/1000, 'unixepoch') 

這將返回不匹配奇異數。我究竟做錯了什麼?

+0

我會建議在_both_日期使用'集團BY'和'transaction_type'列。我不會給出正式答案,因爲在撰寫評論時,你的問題是一團糟。 –

+0

你可以把一些樣本數據或創建一個小提琴 – amdixon

回答

1

可以使用和功能,而不是子查詢

select date(trans_date/1000, 'unixepoch') d, 
     sum(case when transaction_type = 1 then 1 else 0 end) type1_count, 
     sum(case when transaction_type = 2 then 1 else 0 end) type2_count, 
     sum(case when transaction_type = 3 then 1 else 0 end) type3_count 
    from tblTransactions 
    where client_id=1 
    group by d 
2

您收到奇怪值的原因是您的子查詢未按日期過濾,因此您將獲得每種交易類型的總計數。你需要的是一個相關子查詢,將來自外部查詢得到paremeter:

SELECT count(id) as total_count, 
    (select count(id) where transaction_type=1 and trans_date=t.trans_date) as type1_count, 
    (select count(id) where transaction_type=2 and trans_date=t.trans_date) as type2_count, 
    (select count(id) where transaction_type=3 and trans_date=t.trans_date) as type3_count 
FROM tblTransactions t 
where client_id=1 
GROUP BY date(trans_date/1000, 'unixepoch')