当前位置: 首页 > news >正文

SQL高级语法

聚合函数
SELECT vendor_id, AVG(price) AS avg_price FROM Products WHERE price >= 50GROUP BY vendor_id HAVING AVG(price) > 100 ORDER BY avg_price DESC;
PARTITION OVER用于在分区内进行计算。它可以在每个分区内对数据进行排序、聚合、分组等操作。
SELECT id, name, age, salary, AVG(salary) OVER (PARTITION BY age) AS avg_salary FROM employees;根据age列对employees表进行分区。然后,使用AVG()函数计算每个分区内的平均工资ROW_NUMBER()用于为每一行分配一个唯一的序号。它通常与PARTITION BY一起使用,以便在每个分区内为行编号。
SELECT id, name, age, salary, ROW_NUMBER() OVER (PARTITION BY age ORDER BY salary DESC) AS row_num FROM employees;在上面的例子中,根据age列对employees表进行分区。然后,使用ROW_NUMBER()函数为每个分区内的行分配一个唯一的序号,按照salary列的降序进行排序。RANK用于为每一行分配一个排名。它可以根据指定的排序规则,为每个分区内的行进行排名。
SELECT id, name, age, salary, RANK() OVER (PARTITION BY age ORDER BY salary DESC) AS rank FROM employees;根据age列对employees表进行分区。然后,使用RANK()函数为每个分区内的行分配一个排名,按照salary列的降序进行排序。DENSE_RANK与RANK()类似,但它不会跳过排名。即如果有两个行具有相同的排序值,则它们将被分配相同的排名。
SELECT id, name, age, salary, DENSE_RANK() OVER (PARTITION BY age ORDER BY salary DESC) AS dense_rank FROM employees;根据age列对employees表进行分区。然后,使用DENSE_RANK()函数为每个分区内的行分配一个排名,按照salary列的降序进行排序NTILE用于将数据分成指定数量的桶或分区。它可以将数据均匀分布到每个分区中。
SELECT id, name, age, salary, NTILE(4) OVER (ORDER BY salary DESC) AS ntile FROM employees;将employees表的数据分成4个分区,按照salary列的降序进行分区。然后,使用NTILE()函数为每个分区分配一个编号


http://www.mrgr.cn/news/41866.html

相关文章:

  • 【python面试宝典3】遍历文件夹
  • PlantUML中的实体关系图
  • 前端登录页面验证码
  • 制造业的工业控制系统(ICS)安全策略
  • 数据资料安全治理新时代,AI/ML 来助力!
  • 树莓派5里使用protobuf
  • 提升美容院服务效率:SpringBoot管理系统开发指南
  • Linux 下 poll 详解
  • InfoGAN:通过信息最大化生成对抗网络进行可解释的表示学习
  • Python--CUDA安装异常处理
  • 07.useDefault
  • Java - LeetCode面试经典150题 - 哈希表 (二)
  • 基于SSM的本科生操行评定管理系统
  • 深度学习模型性能优化实战之从评估到提升的全流程解析
  • 软考中级网络工程师-基础配置
  • 美容院管理革命:基于SpringBoot的全方位解决方案
  • 汉代儒家对道家《老子》修改为儒家《道德经》
  • Python编码规范与常见问题纠正
  • 【2021工业图像异常检测文献】STPM: 基于特征金字塔匹配的学生-教师异常检测框架
  • 【MySQL 07】内置函数