如何编写按日期计算行数的查询?

Nai*_*ita 3 mysql

我有一个名为emp1. 有一个名为 的表tx_feeder。我想从该表中获取行数。

我使用以下查询来获取单日数据,

select count (*) from tx_feeder 
where datum between (select sysdate -31 from dual) and (select sysdate -1 from dual); 

SQL> 3455890
Run Code Online (Sandbox Code Playgroud)

它将给出整个月的计数。但是,我不想获得整个月的计数,而是希望通过单个 SQL 查询获得如下所示的输出,即一个月中每天的总计数。

     sysdate -31 = 11190  
     sysdate -30 = 13390  
     sysdate -29 = 65790  
     sysdate -28 = 44390   
     ........  
     sysdate -1 = 14590
Run Code Online (Sandbox Code Playgroud)

Rol*_*DBA 7

该 SQL 方言来自 Oracle,但此答案适用于 MySQL。

如果数据是 DATE

select count (*),datum date from tx_feeder 
where datum between (CURDATE() - INTERVAL 31 DAY)
and (CURDATE() - INTERVAL 1 DAY)
group by datum;
Run Code Online (Sandbox Code Playgroud)

如果数据是 DATETIME 或 TIMESTAMP

select count (*),DATE(datum) date from tx_feeder 
where datum between (CURDATE() - INTERVAL 31 DAY)
and (CURDATE() - INTERVAL 1 DAY)
group by DATE(datum);
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找要包括的总计,请执行 WITH ROLLUP

select count (*),datum date from tx_feeder 
where datum between (CURDATE() - INTERVAL 31 DAY)
and (CURDATE() - INTERVAL 1 DAY)
group by datum WITH ROLLUP;
Run Code Online (Sandbox Code Playgroud)

或者

select count (*),DATE(datum) date from tx_feeder 
where datum between (CURDATE() - INTERVAL 31 DAY)
and (CURDATE() - INTERVAL 1 DAY)
group by DATE(datum) WITH ROLLUP;
Run Code Online (Sandbox Code Playgroud)