用于汇总数据的 SQL 聚合/窗口函数
Posted
技术标签:
【中文标题】用于汇总数据的 SQL 聚合/窗口函数【英文标题】:SQL Aggregation / Window Function for Summarizing Data 【发布时间】:2015-03-11 03:31:59 【问题描述】:我想创建一个查询来执行以下操作,但我遇到了问题:
我有一个包含列的数据库表:
TestYear(整数,例如 2014) 日期(日期,即给定年份的一组日期) 每日最差值 RunningValue主键是TestYear + Date
我想得到:
LAST RunningValue 按日期排序(即最终值) MINIMUM WorstValue(即最差值) 每测试年这基本上是每个测试年的单行摘要。是否可以使用窗口函数来做到这一点?非常感谢您提供的任何帮助。
【问题讨论】:
您可以使用First_Value 或Last_Value 来获取Last Running 值和Minimum Worst Value。Per Test Year 不清楚。 谢谢,所以我想要类似以下内容:SELECT MIN(WorstValue), LAST_VALUE(RunningValue) OVER (PARTITION BY TestYear ORDER BY Date) FROM MyTable GROUP BY TestYear 但这不起作用 我认为您的 RunningValue 一定是正确的。是什么导致您按测试年份进行分区。您应该相应地提供示例数据。 【参考方案1】:我不知道为什么你需要 window
函数来做这个只是 aggregate
函数会为你完成这项工作
SELECT testyear,
MIN_DailyWorstValue = Min(dailyworstvalue),
RV.last_runningvalue
FROM db_table A
CROSS apply (SELECT TOP 1 Last_RunningValue= runningvalue
FROM db_table B
WHERE A.testyear = B.testyear
ORDER BY date DESC) RV
GROUP BY testyear,
RV.last_runningvalue
【讨论】:
以上是关于用于汇总数据的 SQL 聚合/窗口函数的主要内容,如果未能解决你的问题,请参考以下文章