【问题标题】:Get MAX value of a group for each month TSQL获取每个月 SQL 的组的 MAX 值
【发布时间】: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/…

标签: sql sql-server tsql ssrs-2008


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多