【问题标题】:How to get count of records month-wise from mysql table?如何从 mysql 表中按月获取记录数?
【发布时间】:2014-05-29 07:09:53
【问题描述】:

我有一个这样的mysql表点

id | points | orderid | date
1  | 10     | 1234    | 2014-01-14
2  | 20     | 4321    | 2014-02-04
3  | 10     | 1234    | 2014-01-13

我想获取唯一 orderid 的记录数

如果我想获取 1 月份的总记录,那么结果将是

1 不是 2,因为我需要获取唯一 orderid 的记录

【问题讨论】:

    标签: mysql count


    【解决方案1】:

    COUNT() 函数中使用DISTINCT 修饰符。

    SELECT YEAR(date) AS y, MONTH(date) AS m, COUNT(DISTINCT orderid)
    FROM yourTable
    GROUP BY y, m
    

    【讨论】:

      【解决方案2】:
      SELECT MONTHNAME(date_reg) M, YEAR(date_reg) Y, COUNT(MONTHNAME(date_reg)) T 
      FROM users 
      WHERE date_reg BETWEEN DATE_ADD(DATE_SUB(DATE_SUB(LAST_DAY(NOW()), INTERVAL 
         DAY(LAST_DAY(NOW())) DAY), INTERVAL 5 MONTH), INTERVAL 1 DAY) AND   
         DATE_SUB(LAST_DAY(NOW()), INTERVAL DAY(LAST_DAY(NOW())) DAY) 
      GROUP BY M 
      ORDER BY Y, M DESC;
      

      【讨论】:

      • 嗨。欢迎来到stackoverflow。对于未来,请看看如何正确格式化答案中的代码(stackoverflow.com/editing-help)。此外,为答案提供一些上下文而不仅仅是代码可以帮助其他读者。
      【解决方案3】:

      您可以使用 MySQL 的substr 函数将完整的日期字符串切割成年和月并将结果字符串分组。

      select substr(createdTime,1,7) as month,COUNT(1) from TABLENAME where {CONDITION} group by month order by 1;
      

      【讨论】:

        猜你喜欢
        • 2021-02-10
        • 1970-01-01
        • 1970-01-01
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多