开窗函数

开窗函数

语法结构

分析函数() over (partition by 分组列名 order by 排序列名 rows between 开始位置 and 结束位置)


不同于聚合函数

聚合函数对一组值执行计算并返回单一的值,如sum(),count(),max(),min(), avg()等,这些函数常与GROUP BY子句连用。

除了count()以外,聚合函数忽略空值

开窗函数可以每个组返回多行,而聚合函数对于每组只返回一行

示例:

CREATE TABLE temp (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  class VARCHAR(20) NOT NULL,
  score INT NOT NULL
);
INSERT INTO temp (id, name, class, score) VALUES
(1, '张明', '1', 92),
(2, '李华', '2', 78),
(3, '王芳', '1', 85),
(4, '赵强', '3', 93),
(5, '刘洋', '2', 65),
(6, '陈晓', '3', 88),
(7, '杨帆', '1', 76),
(8, '周婷', '2', 95),
(9, '吴磊', '3', 81)
无分组排序 分组排序
select name,class,score, ROW_NUMBER() over(ORDER BY score desc) mm from temp; select name,class,score, ROW_NUMBER() over(partition by class order by score desc) mm from temp;

分组排序函数

row_number()、rank() 、dense_rank()

  • row_number() 即使值一样,也不会重复排序,即1,2,3,4,5

  • rank() 值一样时就重复排序,但有间隙,即1,1,3,4

  • dense() 值一样时重复排序,没有间隙,允许并列,即1,1,2,2,3

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇