如何在根据其他条件选择值时部分 GROUP BY 列?
How can I partially GROUP BY columns while picking values based on a condition for others?
有没有一种方法可以让我按周对数据进行分组,同时确保对于某些列,我得到 RN=1 的值?我的数据中有数百列,只有一些列需要“where RN = 1”;名称中带有 MTD 的那些。
max([MTD Value] as [MTD Value] 将不起作用,因为 RN = 1 并不总是一周中的最高值(月份在一周中间变化的情况)
我在 SQL 方面的经验有限,如果答案在于子查询,我可能需要一些帮助。
我打算从中得到的是:
我打算总结除 select 少数“MTD”标签之外的所有数据。
感谢您抽出宝贵时间。
您可以使用 window 函数计算每周最大值 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
有没有一种方法可以让我按周对数据进行分组,同时确保对于某些列,我得到 RN=1 的值?我的数据中有数百列,只有一些列需要“where RN = 1”;名称中带有 MTD 的那些。
max([MTD Value] as [MTD Value] 将不起作用,因为 RN = 1 并不总是一周中的最高值(月份在一周中间变化的情况)
我在 SQL 方面的经验有限,如果答案在于子查询,我可能需要一些帮助。
我打算从中得到的是:
我打算总结除 select 少数“MTD”标签之外的所有数据。
感谢您抽出宝贵时间。
您可以使用 window 函数计算每周最大值 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