[英]MySQL - How to count and sum in a single query
我想在單個查詢中對差值進行計數和求和。 實際上,我有一個訂閱表。 我計算所有訂閱,也計算所有經過驗證的訂閱。 有用。 但是...我想總結一個名為CAR的訂閱的另一個值。 我想總結所有CAR和所有經過驗證的CAR。
所以我的桌子看起來像(實際上比這更大):
ID | NUM | 汽車| 州| DATE_SIGNATURE
所以這是我的嘗試:
SELECT
COUNT(s.num) as total_bs,
SUM(CASE WHEN s.state = '400' THEN 1 ELSE 0 END) as total_validated_bs,
SUM(s.car) as total_car,
SUM(CASE WHEN s.state = '400' THEN 1 ELSE 0 END) as total_validated_car,
DATE_FORMAT( s.date_signature, '%u' ) week_number,
DATE_ADD(s.date_signature, INTERVAL(1-DAYOFWEEK(s.date_signature)) +1 DAY) week_start
FROM subscription as s
GROUP BY DATE_FORMAT( s.date_signature, '%u' )
LIMIT 0,12
這是我的結果:
訂閱總數:276
已驗證的訂閱總數:170
總計車數:4378760
已驗證的總CAR:170
除經驗證的汽車外,其他所有信息均正確。 該數字必須大於CAR,但必須小於CAR。 實際上,我希望獲得經過驗證的訂閱中所有CAR的總和。
是否可以在單個查詢中完成? 我在另一個SELECT中看到了一些帶有SELECT的解決方案,但我發現這個解決方案並不十分優雅。 但是我不知道它是否有效。
謝謝大家 :)
In Your query SUM(CASE WHEN s.state = '400' THEN 1 ELSE 0 END) as total_validated_bs, SUM(CASE WHEN s.state = '400' THEN 1 ELSE 0 END) as total_validated_car both are same total_validated_bs and total_validated_car so it will return same result for both. you should go with different condition for total_validated_car. Do this SUM(CASE WHEN s.state = '400' THEN s.car ELSE 0 END) as total_validated_car
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.