如何获得每天有数据的给定一周的最大价值

时间:2018-11-13 17:22:55

标签: sql sql-server

不确定标题是否足够可读,请尝试在此处更好地解释

我具有以下架构的数据:

ID     | Date         | Unit1 | Hours | TENURE_Hours    
"Alex" | '2018-11-04' |    21 |    12 | 134
"Adam" | '2018-11-04' |    21 |    26 | 156
"John" | '2018-11-04' |    21 |    32 | 122
"Alex" | '2018-11-06' |    21 |    67 | 146
"Adam" | '2018-11-06' |    21 |    74 | 182
"John" | '2018-11-06' |    21 |    45 | 154
"Alex" | '2018-11-11' |    21 |    22 | 213
"Adam" | '2018-11-11' |    21 |    22 | 256
"John" | '2018-11-11' |    21 |    22 | 199

我想要实现的是将每周的拆分次数与一周中的最高次数相结合

我尝试使用MAX(),但它会返回整个范围内的最大值,如果我尝试提取前10个月的数据,它将在此时间段内(而非特定的一周)返回最大值

在上面的示例中,我希望拥有:

Week | ID     | TENURE_Hours

45   | "Alex" | 146
45   | "Adam" | 182
45   | "John" | 154

46   | "Alex" | 213
46   | "Adam" | 256
46   | "John" | 199

您怎么看?有办法吗?

我正在使用Microsoft SQL Server,但我认为可以在每个SQL引擎中解决此问题

预先感谢

1 个答案:

答案 0 :(得分:0)

这是您想要的吗?

select year(date) as yyyy, datepart(week, date) as wk, id, max(tenure_hours)
from t
group by year(date), datepart(week, date), id
order by yyyy, wk, id;