我有一张这样的桌子
| winner | year |
|--------|------|
| alice | 1999 |
| bob | 2000 |
| bob | 2001 |
| alice | 2003 |
| alice | 2005 |
| alice | 2007 |
我想推断不重叠的咒语,即看起来像的表格。
| winner | start| end |
|--------|------|------|
| alice | 1999 | 1999 |
| bob | 2000 | 2001 |
| alice | 2003 | 2007 |
在python中,我会做类似的事情
winners = [(1999, 'alice'),
(2000, 'bob'),
(2001, 'bob'),
(2003, 'alice'),
(2005, 'alice'),
(2007, 'alice')]
winners.sort()
spells = []
spell = {}
for year, name in winners:
if spell:
if name == spell['name']:
spell['end'] = year
else:
spells.append(spell)
spell = {'name': name, 'start': year, 'end': year}
else:
spell = {'name': name, 'start': year, 'end': year}
但我不确定如何在 SQL 中实现相同的结果。