PARTITION BY ORDER BY组合使用

在with语句中使用PARTITION BY order by

WITH ranking AS (
  SELECT
    country,
    city,
    RANK() OVER(PARTITION BY country ORDER BY rating DESC) AS `rank`
  FROM store
)
SELECT
  country,
  city
FROM ranking
WHERE `rank` = 1;

PARTITION BY ORDER BY 和 window frames组合:

SELECT
  id,
  country,
  city,
  opening_day,
  rating,
  MAX(rating) OVER(
    PARTITION BY country
    ORDER BY opening_day
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM store;

分析函数 与 PARTITION BY ORDER BY组合:

lead():

SELECT
  country,
  city,
  opening_day,
  LEAD(city, 1, 'NaN') OVER(PARTITION BY country ORDER BY opening_day)
FROM store;

lag():

SELECT
  store_id,
  day,
  transactions,
  LAG(transactions) OVER(PARTITION BY store_id ORDER BY day) as `lag`,
  transactions - LAG(transactions) OVER(PARTITION BY store_id ORDER BY day) as `diff`
FROM sales
WHERE day BETWEEN '2016-08-05' AND '2016-08-10';

FIRST_VALUE():

SELECT
  country,
  city,
  rating,
  FIRST_VALUE(city) OVER(PARTITION BY country ORDER BY rating DESC)
FROM store;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值