mysql - 查询多天间隔表,按天分组计数?

标签 mysql sql sqlalchemy

想象一个像这样的 mysql 表:

Interval
--------------------------
id          INT, NOT NULL
start       DATETIME, NOT NULL
finish      DATETIME, NOT NULL

我想要一个高效的查询,它可以生成一系列天数中午的间隔数。所以如果我有这样的数据:

id      start                 finish
-------------------------------------------------
1       2013-01-12 08:00:00   2013-01-17 02:00:00 
2       2013-01-12 15:00:00   2013-01-13 18:00:00 
3       2013-01-13 08:00:00   2013-01-13 09:00:00 
4       2013-01-14 11:00:00   2013-01-15 08:00:00 
5       2013-01-14 02:00:00   2013-01-17 01:00:00 
6       2013-01-15 20:00:00   2013-01-16 08:00:00 

我可以运行它并收到这样的结果集:

Timestamp             Count
-----------------------------
2013-01-12 12:00:00   1
2013-01-13 12:00:00   2
2013-01-14 12:00:00   3
2013-01-15 12:00:00   2
2013-01-16 12:00:00   2

我可以粗暴地查询最小开始时间和最大结束时间,然后执行以下操作:

SELECT count(id) FROM Interval 
WHERE start <= @noon_timestamp AND finish >= @noon_timestamp

对于范围内的每一天,但这看起来很丑陋和可怕。

有没有更好的方法?如果是这样,你能用 SqlAlchemy 的语法来做吗? :)

最佳答案

你可以使用BETWEEN:

SELECT COUNT(*)
FROM Interval
WHERE @noon_timestamp BETWEEN start AND finish

关于mysql - 查询多天间隔表,按天分组计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718553/

相关文章:

连接表中的 mySQL ORDER BY

mysql - Wordpress 本地服务器到 Web 数据库

mysql - 如何在 SQL 中为列中的每条数据添加数字?

sql - Oracle中如何查看索引是否被使用

python - SQLAlchemy:从特定用户的favorite_series中检索所有剧集

python - 对多个 Postgres 模式的 Alembic 支持

mysql - Docker 故障转移 : Redis, MySQL 和 Nginx

php - 插入特殊字符/PHP + MySql + Android

mysql - 您的 SQL 语法有误; MySql

python - SQLalchemy 0.7 的任何示例,更新使用 from_statement()