MySQL: filling empty fields with zeroes when using GROUP BY

后端 未结 4 407
孤城傲影
孤城傲影 2020-12-30 09:49

I\'ve got MySQL table

CREATE TABLE cms_webstat (
    ID int NOT NULL auto_increment PRIMARY KEY,
    TIMESTAMP_X timestamp DEFAULT CURRENT_TIMESTAMP,
    # .         


        
4条回答
  •  盖世英雄少女心
    2020-12-30 10:41

    I've finaly found the answer. Maybe I'm insane, but this works.

    SELECT HOUR, max(HOUR_STAT) as HOUR_STAT FROM (
        (
            SELECT HOUR(TIMESTAMP_X) as HOUR, count(*) as HOUR_STAT
            FROM cms_webstat
            WHERE date(TIMESTAMP_X) = date(now())
        )
        UNION (SELECT 0 as HOUR, 0)
        UNION (SELECT 1 as HOUR, 0)
        UNION (SELECT 2 as HOUR, 0)
        UNION (SELECT 3 as HOUR, 0)
        UNION (SELECT 4 as HOUR, 0)
        UNION (SELECT 5 as HOUR, 0)
        UNION (SELECT 6 as HOUR, 0)
        UNION (SELECT 7 as HOUR, 0)
        UNION (SELECT 8 as HOUR, 0)
        UNION (SELECT 9 as HOUR, 0)
        UNION (SELECT 10 as HOUR, 0)
        UNION (SELECT 11 as HOUR, 0)
        UNION (SELECT 12 as HOUR, 0)
        UNION (SELECT 13 as HOUR, 0)
        UNION (SELECT 14 as HOUR, 0)
        UNION (SELECT 15 as HOUR, 0)
        UNION (SELECT 16 as HOUR, 0)
        UNION (SELECT 17 as HOUR, 0)
        UNION (SELECT 18 as HOUR, 0)
        UNION (SELECT 19 as HOUR, 0)
        UNION (SELECT 20 as HOUR, 0)
        UNION (SELECT 21 as HOUR, 0)
        UNION (SELECT 22 as HOUR, 0)
        UNION (SELECT 23 as HOUR, 0)
    )
    AS `combined_table`
    GROUP BY HOUR
    ORDER BY HOUR DESC
    
    

    One MySQL query as desired.

提交回复
热议问题