MySQL - 如何在单个查询中进行计数和求和

MySQL - How to count and sum in a single query

我想在单个查询中对不同的值进行计数和求和。 事实上,我有 Table 的订阅。我计算所有订阅,我计算所有经过验证的订阅。有用。但是...我想总结一个名为 CAR 的订阅的另一个值。我想总结所有 CAR 和所有经过验证的 CAR。

所以我的 table 看起来像(实际上比这个大):

编号 |数量 |汽车 |状态 | 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 的总和。

是否可以在单个查询中完成?我在另一个 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