MySQL PHP选择行在日期范围内计数

时间:2019-03-16 17:50:24

标签: php mysql

我有一个用于订购产品的MySQL表,名为TABLE1。

日期表示购买日期

该表中的其他列目前没有影响。

PRODUCT_ID | DATE      | other columns
    3      |2018-02-01 | other values
    3      |2018-02-03 | other values
    3      |2018-02-07 | other values
    3      |2018-02-07 | other values
    3      |2018-03-02 | other values

我知道第一次订购产品3是2018-02-01

SELECT DATE FROM TABLE1 WHERE PRODUCT_ID = '3' ORDER BY DATE ASC LIMIT 1

如何选择2018年2月1日和2019年3月16日(今天)的每天范围内的产品订购数量,这样我就可以获得这样的表格:

DATE       | ORDERS_PER_DAY
2018-02-01 | 1
2018-02-02 | 0
2018-02-03 | 1
...
2018-02-07 | 2
...
2018-03-02 | 1
...
2018-03-15 | 0
2018-03-16 | 0

感谢帮助!

2 个答案:

答案 0 :(得分:2)

您只需使用GROUP BY子句即可。

[0]

此查询将导致在您需要的日期范围内过滤记录,然后按每天有数据的日期将其分组。

答案 1 :(得分:1)

我的语法可能并不完全正确,但是您可以使用GROUP BY子句尝试这种方法吗。

SELECT DATE, COUNT(*) AS ORDERS_PER_DAY
FROM TABLE1
GROUP BY DATE, PRODUCT_ID
HAVING PRODUCT_ID = '3'

您可以在此处了解更多信息:https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html