mysql - MariaDB/MySQL 电影数据显示为每日时间表 - 4 个时间段

标签 mysql sql database pivot schedule

我有一张电影表,其中的放映时间是从网络提要读入 MySQL 的。表格的格式为:

**id  film             date         time**
1    Lady Bird       2017-03-27   13:40:00
2    I, Tonya        2017-03-27   15:40:00
3    I, Tonya        2017-03-27   17:00:00
4    Lady Bird       2017-03-27   20:00:00
......

我需要对其进行格式化,以便有4个时间段(14:00之前、14:00-17:00、17:00-19:00、19:00之后)。所以结果数据将是:

film      morning     afternoon     evening    night
Lady Bird   13:40                    17:00
I, Tonya                15:40                   20:00

我使用了以下查询来设置列中的时间:

SELECT 
     film,
     CASE WHEN time < "14:00" THEN time END AS morning, 
     CASE WHEN time BETWEEN "14:00" AND "17:00" THEN time END AS afternoon,
     CASE WHEN time BETWEEN "17:00" AND "19:00" THEN time END AS evening,
     CASE WHEN time >= "19:00" THEN time END AS night 
FROM 
     `films` 
WHERE 
     date=date(now())

但是,每次的结果都是单独的记录:

Film         morning      afternoon    evening     night
Lady Bird    13:40          null         null       null
I, Tonya     null          15:40         null       null
I, Tonya     null           null        17:00       null
Lady Bird    null           null         null      20:00

有没有一种方法可以将每张电影记录合并为一个,并且时间位置正确:

Lady Bird    13:40        null       17:00      null

如果我按名称分组,它只会显示每部电影的第一次,而放弃其余部分

最佳答案

是的,按影片聚合,并取当前 CASE 表达式的最大值。这会将每部电影的几条记录折叠成一条记录。

SELECT 
    film,
    MAX(CASE WHEN time < "14:00" THEN time END) AS morning, 
    MAX(CASE WHEN time BETWEEN "14:00" AND "17:00" THEN time END) AS afternoon,
    MAX(CASE WHEN time BETWEEN "17:00" AND "19:00" THEN time END) AS evening,
    MAX(CASE WHEN time >= "19:00" THEN time END) AS night 
FROM films
WHERE
    date = CURDATE()
GROUP BY
    film;

关于mysql - MariaDB/MySQL 电影数据显示为每日时间表 - 4 个时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49514201/

相关文章:

mysql - MySQL服务器的一般日志在插入表后显示一条记录 "query rollback",但记录仍然存在于表中

sql - Oracle 获取外键

mysql - 每周统计的sql查询错误

java - 使用复合主键更新 JPA 实体会导致重复输入错误

mysql - 什么表结构可以提供更快的sql查询结果

python - 尝试在 djangoFramework 项目上运行 python manage.py migrate 但收到错误

php - 设置引导日期选择器对象的值

mysql - 将简单的 Mysql 查询转换为 JPQL 查询

sql - 配置单元查询结果到新表

mysql - 在mysql中的case语句中设置变量