【发布时间】:2016-08-20 03:55:41
【问题描述】:
我正在尝试将一个需求源与前两个不同的最高需求源进行比较,以便我可以在 SQL 中执行一些操作。
这是我所拥有的最大值和特定需求,但我不知道如何找到第二个最大值。我见过max(x) where x <> max(x),但我不确定如何将其用于 Windows 功能。
选择 row_id_str、Max_NR、Max_R
from(
select row_id_str,
MAX(NR_close) OVER (PARTITION BY row_id_str) as Max_NR,
MAX(R_close) OVER (PARTITION BY row_id_str) as Max_R
from(
SELECT row_id_str, demand, close,
sum(if(demand = 'root', close, 0)) as R_close,
sum(if(demand != 'root', close, 0)) as NR_close
FROM [scratch] group by 1,2,3
order by row_id_str, close desc)
group by row_id_str, NR_close, R_close)
group by 1,2,3
解决方案
select row_id_str, Max_NR, Max_R, Sum(if(RN=2, NR_close, 0)) as Second_Max
from(
select row_id_str, NR_close,
MAX(NR_close) OVER (PARTITION BY row_id_str) as Max_NR,
MAX(R_close) OVER (PARTITION BY row_id_str) as Max_R,
ROW_NUMBER() over (partition by row_id_str order by NR_close desc) as RN
from(
SELECT row_id_str, demand_rtb_name, close, sum(if(demand_rtb_name = 'rubicon', close, 0)) as R_close, sum(if(demand_rtb_name != 'rubicon', close, 0)) as NR_close
FROM [scratch.oRubicon1_3] group by 1,2,3
order by row_id_str, close desc)
group by row_id_str, close, NR_close, R_close)
group by 1,2,3,
【问题讨论】:
标签: max google-bigquery window-functions