【问题标题】:How can I partially GROUP BY columns while picking values based on a condition for others?如何在根据其他条件选择值时部分 GROUP BY 列?
【发布时间】:2020-11-19 02:59:40
【问题描述】:

有没有办法让我按周对数据进行分组,同时确保对于某些列,我得到 RN= 1 的值?我的数据中有数百列,只有一些需要“其中 RN = 1”;名称中带有 MTD 的那些。

max([MTD Value] as [MTD Value] 不起作用,因为 RN = 1 并不总是一周中的最大值(月份在一周中间发生变化的情况)

我的 SQL 经验有限,如果答案在子查询中,我可能需要一些帮助。

我打算从中得到的是:

我打算汇总我所有的数据,除了少数几个“MTD”标签。

感谢您抽出宝贵时间。

【问题讨论】:

  • 请向我们展示您想要的结果。
  • 抱歉,现在已经用预期结果的可视化表示对其进行了编辑。

标签: sql tsql group-by subquery window-functions


【解决方案1】:

您可以使用窗口函数计算每周最大 daily_value,然后过滤 rn = 1

select date, week, max_daily_value as daily_value, mtd_value
from (
    select 
        t.*, 
        max(daily_value) over(partition by week) max_daily_value 
    from mytable t
) t
where rn = 1

【讨论】:

  • 非常感谢 GMB。一个完整的大学学位和我的 SQL 知识仍然浮出水面。将来会牢记这一点。
猜你喜欢
  • 2021-10-30
  • 2014-07-26
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 2022-07-06
  • 2018-09-24
相关资源
最近更新 更多