MySQL:如何创建返回过去 30 天和 15 天的行的查询?

迈克尔

目前我正在尝试创建一个查询,从我的issues中检索过去 15 天和过去 30 天的值。我可以在单独的查询中返回这些值,但我想知道是否可以在一个查询中执行此操作。截至目前,我正在使用的查询如下所示:

    SELECT 
        issue, COUNT(id) AS total_issues
    FROM
        mytable
    WHERE
        issue_date BETWEEN DATE(NOW() - INTERVAL 30 DAY) AND DATE(NOW())
            AND issue != 'Currently Unavailable'
            AND issue != 'Out Of Stock'
    GROUP BY issue;

这将返回过去 30 天内的问题以及它们在此期间发生的总次数,如下所示:

|issue       |total_issues|
|issue1      |12          |
|issue2      |24          |
|issue3      |2           |

但我想得到的是更多的东西:

|issues_30   |total_issues|
|issue1      |12          |
|issue2      |24          |
|issue3      |2           |

|issues_15   |total_issues|
|issue1      |8           |
|issue2      |14          |

我在网上查看是否有一种方法可以在这样的特定间隔之间返回值,但只找到了关于一个时间间隔而不是多个时间间隔的问题的答案。

我不知道这目前在 MySQL 中是否可行,或者我没有其他选择然后进行这些所有单独的查询。说我不仅想要过去 30 天和 15 天的值,还想要过去 7 天的值。这意味着我必须添加另一个查询才能获取过去 7 天的问题,这似乎是不好的做法。唯一让我认为这可能不可行的事情是,对于每个不同的时间间隔,并非所有问题都会出现(就像在我的示例中那样,issue3因为它只在过去 30 天内发生,所以它会被删除。所以我可能会期望这样的结果:

|issues_30   |total_issues|
|issue1      |12          |
|issue2      |24          |
|issue3      |2           |

|issues_15   |total_issues|
|issue1      |8           |
|issue2      |14          |
|issue3      |0           |

如果有人在创建这样的查询方面有任何经验,并且可以帮助我了解需要做什么来实现这一点,那将非常有帮助。蒂亚!

蒂姆·比格莱森

我更喜欢这个版本,它使用带有条件聚合的单个查询来查找两种类型的计数:

SELECT 
    issue,
    COUNT(CASE WHEN issue_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
               THEN 1 END) AS issues_last_30,
    COUNT(CASE WHEN issue_date BETWEEN CURDATE() - INTERVAL 15 DAY AND CURDATE()
               THEN 1 END) AS issues_last_15,
    COUNT(*) AS total_issues
FROM mytable
WHERE
    issue != 'Currently Unavailable' AND
    issue != 'Out Of Stock'
GROUP BY
    issue;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何使用laravel获得今天,过去7天和过去30天的利润

在MySQL中获得1天,7天和30天的计数

如何使用间隔比较今天和30天以上的mysql日期字段

我只想显示今天和以后30天之间的MySQL数据库日期

MySql 如何返回过去 60 天和多个不在 60 天内的特定 ID?

如何立即获得上个月的第15天和当前月份的第16天

按接下来的 30 天和日期过滤查询集

在Java中找出最近30天,60天和90天

mysql“之间”查询,包括第一天和最后一天

在pandas groupby中查找最近30天和60天的平均数量

MySQL查询按天和时间分组

MySQL 今天和月至今日查询

PHP / MySql比较过去7天和最近7天之间的数据

如何在过去30天内重复查询而不进行30次联合?

如何在sql中的查询之间添加月份的第一天和最后一天?

如何禁用最近3天和将来的DateTimePicker Android

如何连续计算当天和前一天的值?

如何忽略间隔为30天的行?

如何在 Django 中显示今天、昨天和过去 7 天的数据?

获取过去30天内每天的查询结果

为什么我的程序结果似乎无法正确计算每30天和leap年的平均值?

如何获取过去30天的数据?

每辆车相对有Count(For Day),过去10天和最近20天

使用 SSIS 从 MARA 中选择过去 30 天的行

提取过去 30 天的记录

如何返回过去 30 天内的不同用户总数 dateCreated

如何在查询中获取过去 30 天的日期“start_ts”-oracle

SQL查询以选择今天和前一天的价格

询问从当前日期到提前 7 天和过去 7 天的数据