首页 > 解决方案 > MYSQL 查询以显示当前月份的记录数

问题描述

如屏幕截图所示,我有一个名为“orders”的 mysql 表。我想获取表中的记录总数以及当前月份的记录。我试过

 SELECT COUNT(*),COUNT(MONTH(date) = month(CURRENT_DATE())) FROM orders

但它返回记录总数,在本例中为 8。也尝试使用 CASE,但这也不起作用。我希望结果为 total_orders = 8 ,本月的订单数 = 6。

谢谢

在此处输入图像描述

标签: mysql

解决方案


你很接近,COUNT()不仅计算TRUE值,它计算任何和所有non-NULL值,所以它FALSE也在计算值。

尝试...

SELECT
  COUNT(*),
  SUM(DATE_FORMAT(date, '%Y-%m-01') = DATE_FORMAT(CURRENT_DATE(), '%Y-%m-01'))
FROM
  orders

求和时,TRUE被视为1,并且FALSE被视为0

我也使用DATE_FORMAT()而不是MONTH()这样你就不会意外地计算前几年同一个月的值。

  • 如果你想要,只需将DATE_FORMAT()背面更改为MONTH()并保留SUM()

推荐阅读