Mysql_窗口函数_OVER()的简单使用

一.OVER()

描述

OVER()的意思就是所有的数据都在窗口中

实例
  • OVER() 意思是所有的数据都在窗口中
# 计算所有员工的平均工资
SELECT
    *,
    avg(salary) OVER ()
FROM employee;
  • OVER()用于将当前行与一个聚合值进行比较
# 计算员工与平均薪水之差
SELECT
    *,
    salary - avg(salary) OVER () as diffent
FROM
    employee;
  • OVER()和COUNT()组合
# 计算所有部门数量
SELECT 
    *,
    count(id) OVER () 
FROM 
    department;
  • 一句SQL中使用两个窗口函数
# 在purchase表基础上,添加平均价格和采购总金额两列
SELECT
    *,
    avg(price) OVER (),
    sum(price) OVER ()
FROM purchase;
  • 窗口函数在WHERE`子句后执行
# 查询部门id为1,2,3三个部门员工的姓名,薪水,和这三个部门员工的平均薪资
SELECT
    first_name,
    last_name,
    salary,
    avg(salary) OVER ()
FROM
    employee
WHERE department_id
IN (1, 2, 3)
ORDER BY department_id;
  • 在过滤条件中不能使用OVER()
# 查询所有员工中,薪资高于平均薪资的员工
SELECT
    *,
    AVG(salary) OVER ()
FROM employee
WHERE salary > AVG(salary) OVER ();
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值