作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个日程应用程序,它使用我学校的预定义 API。每节课都在一行中声明了每小时的时间。一个简短的例子:
表课:
Subject Id Start End
English 111 09:30 10:30
English 111 10:30 11:30
Dutch 120 12:30 13:30
Java 109 14:30 15:30
English 111 15:30 16:30
SELECT MIN(start), MAX(end) FROM lessons ORDER BY Start GROUP BY Id
English
,SQL 查询将显示为:
English 09:30 - 16:30
English 09:30 - 11:30
English 15:30 - 16:30
GROUP BY
上课时
start
或
end
值等于具有相同 id 的另一行,以避免错误时间?,我可以通过编程方式执行此操作,但我更喜欢使用 SQL 执行此操作。
最佳答案
这将完成这项工作
with cte as
(
select subject,id,start,end
from mytable t
where not exists
(
select null
from mytable t2
where t2.id = t.id
and t2.end = t.start
)
union all
select t.subject,t.id,cte.start,t.end
from cte
join mytable t
on t.id = cte.id
and t.start = cte.end
)
select subject,id,start,max(end) as end
from cte
group by subject,id,start
+---------+-----+-------+-------+
| subject | id | start | end |
+---------+-----+-------+-------+
| Dutch | 120 | 12:30 | 13:30 |
+---------+-----+-------+-------+
| English | 111 | 09:30 | 11:30 |
+---------+-----+-------+-------+
| English | 111 | 15:30 | 16:30 |
+---------+-----+-------+-------+
| Java | 109 | 14:30 | 15:30 |
+---------+-----+-------+-------+
关于SQLite - GROUP BY 行,仅当某些列与另一列匹配时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41218398/
我是一名优秀的程序员,十分优秀!