mysql - mysql中按日期统计案例

标签 mysql datetime

我有一个与mysql相关的问题:

我有一个名为“datelist”的表,列出了从 2011 年到 2017 年的所有日期。我还有另一个表“sqltest”,有两列“start_date”和“end_date”,使用日期信息显示产品处于事件状态。这两列是datetime类型变量,例如:2016-02-17 21:52:26.594847。

我想计算 2011 年至 2017 年每个日期有多少案例处于活跃使用状态。

我是mysql新手,有人可以指导我如何处理这样的问题吗?

欣赏!

最佳答案

如果没有您提供的数据,我们只能根据一个简短问题中提供的线索进行猜测。我们知道有 2 个表和 2 个列名,但第二个表中的列名未知。问题暗示了时间精度的差异,但样本数据并未验证这一点。

我想提到时间精度的原因是为了在查询中进行一些补偿,以确保记录一天中事件的任何测试。例如,日期 2016-02-17 记录了从 2016-02-17 21:52:26.594847 开始的测试

示例数据:

CREATE TABLE sqltest
    (`start_date` datetime, `end_date` datetime)
;

INSERT INTO sqltest
    (`start_date`, `end_date`)
VALUES
    ('2016-02-17 21:52:26', '2016-02-27 21:52:26')
;


CREATE TABLE datelist
    (`a_date` datetime)
;

INSERT INTO datelist
    (`a_date`)
VALUES
    ('2016-02-01 00:00:00'),
    ('2016-02-02 00:00:00'),
    ('2016-02-03 00:00:00'),
    ('2016-02-04 00:00:00'),
    ('2016-02-05 00:00:00'),
    ('2016-02-06 00:00:00'),
    ('2016-02-07 00:00:00'),
    ('2016-02-08 00:00:00'),
    ('2016-02-09 00:00:00'),
    ('2016-02-10 00:00:00'),
    ('2016-02-11 00:00:00'),
    ('2016-02-12 00:00:00'),
    ('2016-02-13 00:00:00'),
    ('2016-02-14 00:00:00'),
    ('2016-02-15 00:00:00'),
    ('2016-02-16 00:00:00'),
    ('2016-02-17 00:00:00'),
    ('2016-02-18 00:00:00'),
    ('2016-02-19 00:00:00'),
    ('2016-02-20 00:00:00'),
    ('2016-02-21 00:00:00'),
    ('2016-02-22 00:00:00'),
    ('2016-02-23 00:00:00'),
    ('2016-02-24 00:00:00'),
    ('2016-02-25 00:00:00'),
    ('2016-02-26 00:00:00'),
    ('2016-02-27 00:00:00'),
    ('2016-02-28 00:00:00'),
    ('2016-02-29 00:00:00')
;

示例查询

select
      d.a_date
    , count(t.start_date)
from datelist d
left join sqltest t on d.a_date between DATE_SUB(t.start_date,INTERVAL 1 DAY)  and t.end_date
group by
      d.a_date
;

关于mysql - mysql中按日期统计案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44221244/

相关文章:

使用 DATA DIRECTORY 创建 MySQL 分区表而不移动表

php - 访问后出现 undefined variable /空属性错误

javascript - 谷歌应用程序脚本中的减去天数将不会反射(reflect)当年的正确更改

ruby-on-rails - 为一个属性使用多个输入字段

mysql - 如何使用条件连接优化查询?

PHP 多个数据库连接失败

MySQL 创建表时报错 #1064

python - 从提取的分组数据生成新的数据框

c# - 将 float 转换为时间跨度

python-3.x - 将日期时间四舍五入到最接近的小时