mysql - 单个查询获取多个日期的数据

标签 mysql

我想获取 1 到 90 天内添加的商店总数。我想显示 7 天、14 天、30 天、60 天和 90 天添加的商店数量。我想通过使用 1 个计数查询来获取所有这些。 我正在使用以下查询。如果我以这种方式使用查询,那么我必须多次编写查询。

SEELCT COUNT(storeid) AS totalStores FROM example 
WHERE DATEDIFF(CURDATE(), date_created)

最佳答案

你可以把它作为一个枢轴:

SELECT
    sum(days <= 7) AS total7,
    sum(days <= 14) AS total14,
    sum(days <= 30) AS total30,
    sum(days <= 60) AS total60,
    sum(days <= 90) AS total90
FROM (
    SELECT DATEDIFF(CURDATE(), date_created) as days
    FROM example
) x

sum(condition) 语法有效(在 mysql 中),因为 true 为 1,false 为 0,因此对条件求和可以清楚地计算其 true 的次数。

子查询用于使代码更具可读性并增加一点性能(每行仅调用一次datediff())。

关于mysql - 单个查询获取多个日期的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335538/

相关文章:

Mysql选择一个字段需要不同的条件

mysql - 如果不满足条件,如何在选定范围中包含上一行

mysql - LIKE MySQL 搜索无法使用 CONCAT

MySQL 多重左连接限制

php - 看看是否过了30分钟?

mysql - block 密码、salt、AES、MySQL 和凭证存储的最佳实践

php - 如何比较查询中的 MySQL int 值而不获取它

php - 如何在 Laravel 4.2 中使用 Gmail 将存储在数组中的电子邮件信息传递到 Mail::send

php - 成功后立即需要 INSERT 时,PHP 是否应该在 MySql Insert 之后休眠?

mysql - 将 .csv 导入 MySQL 时如何跳过中间行