【发布时间】:2016-08-12 09:18:38
【问题描述】:
我有一张按日期列出汽车信息的表格。
car_id date <aditional info>
1 20160101
2 20160102
1 20160103
2 20160104
1 20160105
1 20160106
1 20160107
1 20160108
1 20160109
1 20160110
如果汽车有<= 5 记录,那么将只有一组。 CASE car_id = 2
如果汽车有<= 10 记录,那么将有两个平均组。 CASE car_id = 1 按日期排序
- 20160101 - 20160106
GROUP 1 - 20160107 - 20160110
GROUP 2
如果汽车有 '> 10' 则将有三个均匀分布的组。
渴望输出。
car_id date group_id
1 20160101 1
1 20160103 1
1 20160105 1
1 20160106 1
------------------------
1 20160107 2
1 20160108 2
1 20160109 2
1 20160110 2
------------------------
2 20160102 1
2 20160104 1
我尝试使用ntile(),但无法使组号动态化。
SELECT car_id,
"date",
ntile(3) over (partition by car_id order by "date") as group_id
FROM Table1
如果可以直接在
C# LINQ上完成加分,否则我会在 postgres 上创建一个函数。
附加信息 我会以不同颜色(组)显示历史车辆信息,因此数据量少的车辆将以单一颜色显示。最大颜色数为 3。
【问题讨论】:
标签: c# linq postgresql grouping