获取每个月 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 值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取同一张表中不同类别的布尔值的比例

如何编写查询以获取 SQL Server 中每个组的第一个条目? [复制]

如何获取分配到组的用户

获取在正则表达式中匹配的组的索引?

SQL:查询获取特定组的所有用户以及所有组的每个用户

Pandas groupby:获取知道其 id 的组的大小(来自 .grouper.group_info[0])