mysql - 每天计数(mysql)

标签 mysql sql

I want get something like this

Mysql数据

(dat_reg)
1.1.2000 
1.1.2000 
1.1.2000
2.1.2000
2.1.2000
3.1.2000

我想得到:

   (dat_reg)  (count)
    1.1.2000 -   3
    2.1.2000 -   5
    3.1.2000 -   6

我试过的是这样的:

SELECT COUNT( * ) as a , DATE_FORMAT( dat_reg, '%d.%m.%Y' ) AS dat 
FROM members 
WHERE (dat_reg > DATE_SUB(NOW() , INTERVAL 5 DAY)) 
GROUP BY DATE_FORMAT(dat_reg, '%d.%m.%Y') 
ORDER BY dat_reg 

但我得到:

 1.1.2000 - 3 | 2.1.2000 - 2 | 3.1.2000 - 1 

关于如何为此创建查询的一些提示?

最佳答案

我建议在 MySQL 中使用变量:

SELECT d.*, (@sumc := @sumc + cnt) as running_cnt
FROM (SELECT DATE_FORMAT(dat_reg, '%d.%m.%Y') as dat, COUNT(*) as cnt
      FROM members 
      WHERE dat_reg > DATE_SUB(NOW() , INTERVAL 5 DAY) 
      GROUP BY dat
      ORDER BY dat_reg 
     ) d CROSS JOIN
     (SELECT @sumc := 0) params;

如果你想要一个从时间开始的累加,那么你需要一个额外的子查询:

SELECT d.*
FROM (SELECT d.*, (@sumc := @sumc + cnt) as running_cnt
      FROM (SELECT DATE_FORMAT(dat_reg, '%d.%m.%Y') as dat, dat_reg, COUNT(*) as cnt
            FROM members 
            GROUP BY dat
            ORDER BY dat_reg 
           ) d CROSS JOIN
           (SELECT @sumc := 0) params
      ) d
WHERE dat_reg > DATE_SUB(NOW() , INTERVAL 5 DAY)

关于mysql - 每天计数(mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51219026/

相关文章:

php - 将数据插入数据库

mysql - SQL 在 PHP 中失败,但在命令行 mysql 中工作

c# - 寻找为 Sql 查询和 Windows 窗体创建帮助程序类的指导

sql - 计算某一列中另一列的值为 1 的行数

sql - 删除数据库树中的节点

php 报告/查询生成器/设计器

java - 与tomcat 7建立数据库连接

sql - 单个表与两个一对一相关表的性能

php - Eloquent 创建了错误的查询

sql - 必须出现在 GROUP BY 子句中或在聚合函数中使用