SQLZOO 9-Window function

该博客主要介绍了SQLZOO教程中的窗口函数使用,包括暖身练习、选举赢家分析、PARTITION BY子句的应用、爱丁堡选区详情、仅显示胜者的结果以及苏格兰席位的深入探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


练习题链接: https://sqlzoo.net/wiki/Window_functions

1.Warming up

SELECT lastName
       ,party
       ,votes
FROM ge
WHERE constituency = 'S14000024' 
  AND yr = 2017
ORDER BY votes DESC

2.Who won?

SELECT party
       ,votes
       ,RANK() OVER (ORDER BY votes DESC) as posn
FROM ge
WHERE constituency = 'S14000024' 
  AND yr = 2017
ORDER BY party

3.PARTITION BY

SELECT yr
       ,party
       ,votes
       ,RANK() OVER (PARTITION BY yr ORDER BY votes DESC) as posn
FROM ge
WHERE constituency = 'S14000021'
ORDER BY party,yr

4.Edinburgh Constituency

SELECT constituency
       ,party
       ,votes
       ,RANK() OVER(PARTITION BY constituency ORDER BY votes DESC) AS posn
FROM ge
WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
   AND yr  = 2017
ORDER BY posn,constituency

5.Winners Only

SELECT constituency
       ,party
FROM (SELECT constituency
             ,party
             ,RANK() OVER(PARTITION BY constituency ORDER BY votes DESC) AS posn
      FROM ge
      WHERE constituency BETWEEN 'S14000021' AND 'S14000026'
        AND yr  = 2017
      ORDER BY constituency,votes DESC) a
where posn=1

6.Scottish seats

SELECT party
       ,count(1)
from (SELECT constituency
             ,party
             ,RANK() OVER(PARTITION BY constituency ORDER BY votes DESC) AS posn
      FROM ge
      WHERE yr  = 2017 
        and constituency like 'S%'
      ORDER BY constituency,votes DESC) a
WHERE posn=1
GROUP BY party
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值