我有以下格式的数据:
|------------------------|
| Product | Color | Year |
|------------------------|
| Ball | Blue | 1999 |
| Ball | Blue | 2000 |
| Ball | Blue | 2001 |
| Stick | Green | 1984 |
| Stick | Green | 1985 |
|------------------------|
如何将其转换为以下内容:
|-----------------------------|
| Product | Color | Year Range|
|-----------------------------|
| Ball | Blue | 1999-2001 |
| Stick | Green | 1984-1985 |
|-----------------------------|
数据位于PostgreSQL表中,包含187,000多行,迫切需要以这种方式进行整合。我如何使用Python 2.7来处理这个问题?
答案 0 :(得分:2)
数据位于PostgreSQL表中,包含187,000多行 迫切需要以这种方式巩固。
可能迫切需要以这种方式进行整合以进行报告,但几乎可以肯定不需要以这种方式进行整合以进行存储。在这里轻轻一步。
您可以使用GROUP BY
子句以大致该格式获取数据。 (我使用“product_color_years”作为表名。)
select product, color, min(year), max(year)
from product_color_years
group by product, color
要将年份合并为一个列,请使用连接运算符。
select product, color, min(year) || '-' || max(year) year_range
from product_color_years
group by product, color
只有
才有效如果您希望看到如此报告的空白:
product color year_range
--
Ball Blue 1999-2001
Ball Blue 2003-2005
Stick Mauve 2000, 2010
那么你最好使用报告编写器。 (例如,谷歌“python报告”。)上面的SQL将这些蓝色球报告为Ball Blue 1999-2005
,这可能不是你想要的。