获取每个月 SQL 的组的 MAX 值
Posted
技术标签:
【中文标题】获取每个月 SQL 的组的 MAX 值【英文标题】:Get MAX value of a group for each month TSQL 【发布时间】:2016-08-22 19:07:56 【问题描述】:我有一个 TSQL 查询,它给出了给定结果集趋势数据的最大值。我想根据每个月的结果获得这些数据。 (我在结果集中有一个日期时间列)。如果我选择三个月的数据,它必须为每个月提供这个值。现在它会查找最大值并在所有月份中给出相同的结果。
下面是我用来获取趋势结果的表达式。它是具有其他列数的 select 语句的一部分。
select col1, col2, sampledatecollected, (Select MAX(AvailMemSlope) FROM SlopeCTE) * MetricID + (Select MAX (AvailMemIntercept) FROM InterceptCTE) AS AvailMemTrend
我想我可能需要做这样的事情,但考虑到表达我对如何获得所需结果有点困惑
select name, max(value)
from tbl1
group by name
CPUTrend id 是我从第一个查询中指定的表达式中获得的数据。
样本数据:
Date AVGCPU MAXCPU CPUTrend
8/22/2016 20 40 44
8/23/2016 20 40 44
8/24/2016 20 40 44
8/25/2016 20 40 44
9/22/2016 20 50 44
9/23/2016 20 50 44
9/24/2016 20 50 44
预期结果:
Date AVGCPU MAXCPU CPUTrend
8/22/2016 20 40 32
8/23/2016 20 40 32
8/24/2016 20 40 32
8/25/2016 20 40 32
9/22/2016 20 50 44
9/23/2016 20 50 44
9/24/2016 20 50 44
现在我得到的只是 44,因为它是最大值。
【问题讨论】:
请展示一些示例数据和预期结果 @TheGameiswar 我在问题中添加了更多细节。请验证 请发布当前样本数据 @TheGameiswar 完成。 问题还不清楚,请花点时间看看如何改进问题..这是一个很好的起点..spaghettidba.com/2015/04/24/… 【参考方案1】:我认为你只想要一个子查询:
with t as (
select col1, col2, sampledatecollected,
(Select MAX(AvailMemSlope) FROM SlopeCTE) * MetricID +
(Select MAX (AvailMemIntercept) FROM InterceptCTE) AS AvailMemTrend
from ?? -- the SQL in your question is incomplete
)
select year(sampledatecollected), month(sampledatecollected),
max(AvailMemTrend)
from t
group by year(sampledatecollected), month(sampledatecollected)
order by year(sampledatecollected), month(sampledatecollected);
【讨论】:
以上是关于获取每个月 SQL 的组的 MAX 值的主要内容,如果未能解决你的问题,请参考以下文章