sql - SQL Server - aggregate the data
问题描述
The below is the data I have. How to aggregate the data based on ID and Room but if the room is repeating it should not aggregate to the first appearance?
It should be aggregated like the below result set.
Data set:
ID Room Length AD
-----------------------------------
1001 MM 2 2018-06-26
1001 MM 3 2018-06-26
1001 MM 0.5 2018-06-26
1001 MM 3 2018-06-28
1001 A5 3.5 2018-06-29
1001 MM 4.4 2018-06-29
1001 MM 3.2 2018-06-30
1001 A5 2.1 2018-07-02
1001 A5 1.7 2018-07-03
Expected result:
ID Room Sum_Length
-----------------------
1001 MM 8.5
1001 A5 3.5
1001 MM 7.6
1001 A5 3.8
解决方案
It seems you need differences of row_number()
:
select id, room, sum(Length)
from (select t.*, row_number() over (partition by id order by ad) seq1,
row_number() over (partition by id, room order by ad) seq2
from table t
) t
group by id, room, (seq1 - seq2);
推荐阅读
- r - 如果包依赖于 `lubridate`、`dplyr` 和其他的 `tidyverse`,我应该将哪个列为依赖项?
- python - 每个组的 MAX value_counts 的 Pandas Fillna
- c# - C#在写入Excel文件时更改字体颜色
- javascript - 如何动态设置查询选择器属性
- javascript - 不在 HTML 中显示响应
- html - 容器流体中的中心容器
- swift - swift 'FIRInvalidArgumentException',原因:'不支持的类型:NSURL(在字段 AccountTypeImageURL 中找到)'
- sql - 在单个查询中通过 oracle 获取基于优先级的单个记录
- wpf - 如何在 wpf 中调整 3d 模型的大小?
- three.js - 三个js轨道控制设置角度