[英]How to Sum total of data that have a same value?
我想對數據庫中的狀態總數求和。 如果我的狀態= 0,我希望它計算狀態= 0的所有實例。我已經嘗試過此代碼,但總和與我的數據庫不匹配。
SELECT t.date as Date, COUNT(DISTINCT t.id) as Transaction, SUM(t.status=0) as Success, COUNT(DISTINCT r.id) as Request, SUM(r.status=0) as RequestSuccess
FROM transfer_tx_201503 AS t,request_tx_201503 AS r
WHERE t.time >='00:00:00' AND t.time <= '$searchterm' AND t.date=r.date
GROUP BY `date`
您的查詢正確編寫為:
SELECT t.date as Date, COUNT(DISTINCT t.id) as Transaction, SUM(t.status=0) as Success, COUNT(DISTINCT r.id) as Request, SUM(r.status=0) as RequestSuccess
FROM transfer_tx_201503 t JOIN
request_tx_201503 r
ON t.date = r.date
WHERE t.time >='00:00:00' AND t.time <= '$searchterm'
GROUP BY `date`
(請注意, ON
子句和顯式JOIN
這是將兩個表連接在一起的正確方法。)
您的問題是,對於給定的date
,您將獲得笛卡爾乘積,因為每個表中的多行都與該日期匹配。 最好的解決方案是預先匯總結果:
SELECT t.date as Date, t.Transaction, t.Success, r.Request, r.RequestSuccess
FROM (select date, count(*) as transaction, sum(t.status = 0) as success
from transfer_tx_201503 t
group by date
) t JOIN
(select date, count(*) as Requestion, SUM(r.status = 0) as RequestSuccess
from request_tx_201503 r
group by date
) r
ON t.date = r.date
WHERE t.time >='00:00:00' AND t.time <= '$searchterm' ;
請注意,您不再需要外部group by
。 您還可以在每個子查詢中包括where
子句。 如果存在問題,那可能會提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.