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 ();
经验分享 程序员 微信小程序 职场和发展