簡體   English   中英

MySQL-如何在單個查詢中計數和求和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM