【问题标题】:Display Zero Count in MySQL query在 MySQL 查询中显示零计数
【发布时间】:2012-09-02 08:07:00
【问题描述】:

我的数据库中有一个名为subscriber 的表,其中包含两行,一行用于订阅者ID,另一行用于每个订阅者获得的积分。 我的选择查询:

SELECT 1000 * ( LOYALTY_POINTS DIV 1000 ) AS  'from', 1000 * ( LOYALTY_POINTS DIV 1000 ) +1000 AS  'to', COUNT( * ) AS NUMBER FROM SUBSCRIBER GROUP BY LOYALTY_POINTS DIV 1000 

应该为每个点范围返回订阅者数量,但不幸的是它只返回不为零的订阅者数量。 我的结果是:

从  到         NUMBER
0      1000    8
1000 2000     2
3000 4000     1

我希望查询也返回计数为零的记录。 结果应该是:

从  到         NUMBER
0      1000    8
1000 2000     2
2000 3000     0
3000 4000     1

怎么做?提前谢谢你。

【问题讨论】:

    标签: mysql select count


    【解决方案1】:

    你需要生成一些数字来表示你的范围

     SELECT 0 as RangeStart UNION Select 1000 UNION Select 2000 UNION Select 3000
    

    并将其加入您的结果。

    SELECT 
        RangeStart, RangeStart + 999 as RangeEnd, RangeCount
    FROM
        (SELECT 0 as RangeStart UNION Select 1000 UNION Select 2000 UNION Select 3000) range
             LEFT JOIN
        (Select LoyaltyPoints DIV 1000 as loyaltypoints, count(*) as RangeCount group by LoyaltyPoints DIV 1000 ) counts
        ON range.rangestart = counts.loyaltypoints
    

    【讨论】:

    • 同意 +1。但我要补充一点,在应用程序代码中将缺失的范围简单地视为零通常更容易。
    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 2021-02-01
    • 2021-11-16
    • 2023-04-04
    • 2017-01-20
    • 2010-10-26
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多