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

【Oracle数据库进阶】004.SQL基础查询_聚合、分组、过滤、排序

无奋斗不青春

课 程 推 荐
我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库教程合集 👈👈
MySQL数据库教程:👉👉 MySQL数据库教程合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集 👈👈
.

分隔线
在这里插入图片描述

SQL基础查询_聚合、分组、过滤、排序

      • 聚合、分组、过滤、排序
        • 聚合函数
        • 分组
        • 分组聚合(按分组进行统计)
        • 聚合过滤
        • 排序
        • ==查询顺序==
        • 课后练习

聚合、分组、过滤、排序

聚合函数
  • 函数
    求和:sum
    平均:avg
    最大:max
    最小:min
    统计:count
    -- 统计函数不会统计空值
    
分组
  • 关键字
    group by
    
    • 一般分组不会单独使用,都是配合聚合函数一起使用
    • 分组函数可以做到去重的效果,去重函数还有Distinct
分组聚合(按分组进行统计)
  • 语法
    select 分组字段,聚合函数(统计字段) from 表名 group by 分组字段
    
  • 示例
    // 统计各部门的平均工资
    select deptno,avg(sal) from emp group by deptno;// 统计各部门的人员数量
    select deptno,count(empno) from emp group by deptno;
    
    • 注意:所有查询字段中,除了聚合函数统计的字段,其他的都必须在group by 分组中
聚合过滤
  • 关键字
    having
    
  • 示例
    select deptno,count(empno) from emp 
    group by deptno
    having count(empno)>3;
    
排序
  • 关键字
    order by [asc/desc]
    
    • 默认是正序asc,倒序必须写关键字desc
    • 可以按多个字段进行排序
  • 示例
    select 字段1, 字段2, 字段3, ... 
    from 表名
    order by 字段1 asc, 字段2 desc, 字段3 asc
    

  • 语法顺序
    SELECT * FROM 表名WHERE 条件GROUP BY 字段HAVING 条件
    ORDER BY 列名 [ASC/DESC] 
    

查询顺序
  • 查询顺序
    1. FROM
    2. WHERE
    3. GROUP BY /聚合
    4. HAVING
    5. SELECT
    6. ORDER BY
    
  • 语法解析,为什么顺序是这样的?
    1. FROM ———————   先要确定从哪张表取数
    2. WHERE ———————  过滤掉不想要的数据
    3. GROUP BY /聚合 ——— 对数据进行分组(聚合)
    4. HAVING ——————— 分组之后过滤出自己需要的数据
    5. SELECT ——————— 查出自己需要的字段
    6. ORDER BY —————— 最后对数据进行排序
    

课后练习
  • 建表语句
    -- 销售订单表
    DROP TABLE sales_order; -- 删除表
    create table sales_order -- 表名不能超过 30个字符,字段名也不能超过30个字符
    (order_id VARCHAR2(20), -- 订单编号product_name VARCHAR2(10), -- 产品名称product_category VARCHAR2(10), -- 产品类别amount NUMBER(10), -- 订单金额salesman VARCHAR2(10) -- 销售人
    );-- 表注释
    COMMENT ON TABLE sales_order IS '销售订单表';-- 字段注释
    COMMENT ON COLUMN sales_order.order_id IS '订单编号';
    COMMENT ON COLUMN sales_order.product_name IS '产品名称';
    COMMENT ON COLUMN sales_order.product_category IS '产品类别';
    COMMENT ON COLUMN sales_order.amount IS '订单金额';
    COMMENT ON COLUMN sales_order.salesman IS '销售人';-- 插数据
    insert into sales_order values('SO201804170001','电脑','3C',5000,'小明');
    insert into sales_order values('SO201804170002','硬盘','3C',1000,'小明');
    insert into sales_order values('SO201804170003','显卡','3C',2000,'小明');
    insert into sales_order values('SO201804170004','鼠标','3C',30,'小黄');
    insert into sales_order values('SO201804170005','键盘','3C',50,'小黄');insert into sales_order values('SO201804170006','衣服','服装',680,'小黄');
    insert into sales_order values('SO201804170007','裤子','服装',350,'小黄');
    insert into sales_order values('SO201804170008','帽子','服装',100,'小明');
    insert into sales_order values('SO201804170009','鞋子','服装',990,'小明');
    insert into sales_order values('SO201804170010','袜子','服装',22,'小胖');insert into sales_order values('SO201804170011','手表','首饰',8800,'小胖');
    insert into sales_order values('SO201804170012','手镯','首饰',16800,'小胖');
    insert into sales_order values('SO201804170013','钻戒','首饰',28000,'小胖');
    insert into sales_order values('SO201804170014','项链','首饰',1680,'小明');
    insert into sales_order values('SO201804170015','耳环','首饰',9999,'小明');commit;
    
  • 练习题
  1. 求每个人销售总额是多少?
    select s.salesman ,sum(s.amount) 
    from sales_order s 
    group by s.salesman;
    
  2. 求每类产品销售额是多少?
    select s.product_name ,sum(s.amount) 
    from sales_order s
    group by s.product_name;
    
  3. 求每个人每类产品分别销售额是多少?
    select s.salesman,s.product_name ,sum(s.amount) 
    from sales_order s
    group by s.salesman,s.product_name;
    
  4. 每个人的销售订单数是多少?
    select s.salesman ,count(s.order_id) 
    from sales_order s
    group by s.salesman;
    
  5. 销售总额超过20000的人
    select s.salesman ,sum(s.amount) 
    from sales_order s 
    group by s.salesman
    having sum(s.amount)>20000;
    

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

相关文章:

  • C++对C的扩展(一)---作用域运算符和命名空间
  • 大数据开发电脑千元配置清单
  • 亚洲最具影响力人物颜廷利:心理健康对身体健康的重要影响
  • 高级java每日一道面试题-2024年10月15日-JVM篇-说一下JVM的主要组成部分?及其作用?
  • 【JS】数组详解
  • 异地多活(Active-Active Geo-Redundancy)
  • 洛谷 P1803:凌乱的yyy / 线段覆盖 ← 贪心算法
  • WIN11常用设置
  • Leetcode 227 Basic calculator
  • 阻塞队列相关的问题
  • Github 2024-10-15 Python开源项目日报 Top10
  • Python | Leetcode Python题解之第479题最大回文数乘积
  • 【Linux】解读信号的本质&相关函数及指令的介绍
  • DDPM代码详解(可用)
  • C语言复习概要(六)
  • 【2D/3D-Lidar-SLAM】 2D/3D激光SLAM以及GMapping 与 Cartographer
  • 开发规范 - mac系统1小时装机极速装机开发环境
  • 基于springboot+微信小程序校园自助打印管理系统(打印1)
  • Golang | Leetcode Golang题解之第479题最大回文数乘积
  • 大厂服务降级规范