sql 按组别和日差查询
sql queries by group and day difference
我想计算与 End 相比 Start/End 的天差。我知道我必须按 Id 对它们进行分组,但我不确定如何执行 Day 之间的差异。我使用 Python 获得了这方面的帮助,但我想查看 SQL 中的逻辑。
表 1
Id Day Status
111 1 Start
111 5 End
222 2 Begin
222 7 End
333 1 Start
333 3 Begin
333 7 End
理想的结果是:
Id Day Status Length
111 1 Start 4
111 5 End
222 2 Begin 5
222 7 End
333 1 Start 6 (since we Start on Day 1 and End on day 7)
333 3 Begin 4 (since we Begin on Day 3 and End on day 7)
333 7 End
谢谢
例如。你可以这样做:
Select a.Id, a.Day, a.Status, b.day-a.day
从表 1
Left Join table1 b on a.id=b.id and a.status!='end' and b.status='end'
我想计算与 End 相比 Start/End 的天差。我知道我必须按 Id 对它们进行分组,但我不确定如何执行 Day 之间的差异。我使用 Python 获得了这方面的帮助,但我想查看 SQL 中的逻辑。
表 1
Id Day Status
111 1 Start
111 5 End
222 2 Begin
222 7 End
333 1 Start
333 3 Begin
333 7 End
理想的结果是:
Id Day Status Length
111 1 Start 4
111 5 End
222 2 Begin 5
222 7 End
333 1 Start 6 (since we Start on Day 1 and End on day 7)
333 3 Begin 4 (since we Begin on Day 3 and End on day 7)
333 7 End
谢谢
例如。你可以这样做:
Select a.Id, a.Day, a.Status, b.day-a.day 从表 1 Left Join table1 b on a.id=b.id and a.status!='end' and b.status='end'