我想得到最小/最大的房子号码,这是一个简单的任务。
但是有一个专栏包含了一个地区。
原始数据:
Street Name | House Number | district
Hauptstr. | 1 | A
Hauptstr. | 2 | A
Hauptstr. | 3 | B
Hauptstr. | 4 | B
Hauptstr. | 5 | A
期望输出:
Street Name | House number (FROM) | House number (TO) | district
Hauptstr. | 1 | 2 | A
Hauptstr. | 3 | 4 | B
Hauptstr. | 5 | 5 | A
我的输出:
Street Name | House number (FROM) | House number (TO) | district
Hauptstr. | 1 | 5 | A
Hauptstr. | 3 | 4 | B
我乐于接受各种意见和建议。我需要一个临时表来处理地址吗?
提前谢谢你。
最佳答案
在MySQL中可以使用变量来实现这一点。它为每行相邻的街道值指定一个组:
select street, district, min(housenumber), max(housenumber)
from (select t.*,
(@grp := if(@d = district, @grp,
if(@d := district, @grp + 1, @grp + 1)
)
) as grp
from t cross join
(select @d := '', @grp := 0) params
order by street, housenumber
) t
group by grp, street, district;