简体   繁体   English

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

[英]MySQL PHP select rows count in date range

I have a MySQL table for product orderings named TABLE1. 我有一个名为TABLE1的产品订单的MySQL表。

Date means the date purchase has been made 日期表示已购买日期

The table has other columns that currently have no influence. 该表有其他列,目前没有影响力。

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

I know that the first time the product 3 has been ordered, is 2018-02-01 我知道第一次订购产品3是2018-02-01

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

How do I select count of product orderings per day within range of 2018-02-01 and 2019-03-16 (today) so that I could get a table like that: 如何 2018-02-01和2019-03-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

Thanks for help! 感谢帮助!

You can simply use GROUP BY clause to do it. 您只需使用GROUP BY子句即可。

SELECT `DATE`, COUNT(`PRODUCT_ID`) AS ORDERS_PER_DAY
FROM TABLE1
WHERE `DATE` BETWEEN '2018-02-01' AND CURDATE() 
GROUP BY `DATE`

This query will result in filtering the records on your required date range and then grouping it by each day where there is data. 此查询将导致过滤所需日期范围内的记录,然后在有数据的每一天对其进行分组。

My syntax may not be exactly correct, but could you try something like this using the GROUP BY clause. 我的语法可能不完全正确,但您可以使用GROUP BY子句尝试这样的事情。

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

you can read more about this here: https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html 你可以在这里阅读更多相关信息: https//dev.mysql.com/doc/refman/8.0/en/group-by-handling.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM