-- 语法

select * |列名|表达式         -- 5
from 表名                         -- 1
where 条件                      -- 2
group by 列名                  -- 3
having 条件                     -- 4
order by 列名 [asc/desc] -- 6

报错 不是group by表达式
查询字段跟分组字段不一致
分组字段要与查询字段保持一致
除了分组字段其他字段都要聚合
count里面null不做统计

-- 案例
select e.deptno
         ,e.job -- 需要的字段
         ,avg(e.sal) as avg_sal -- 表达式
  from emp e -- 从emp表中取数据
where e.deptno <> 10 -- 制定过滤的规则
group by e.deptno,e.job -- 将数据分组
having avg(e.sal) > 1500 -- 分组后二次过滤
order by e.deptno; -- 分组排序

sum 求和
avg 求平均
max 最大
min 最小
count 统计        -- select count(1) from emp;
having 过滤

-- where筛选信息
'=' 等于、赋值
'>' 大于
'<' 小于
'<=' 小于等于
'>=' 大于等于
'<>' 不等于

-- 查询顺序
1.from
2.where
3.group by / 聚合
4.having
5.select
6.order by
语法解析,为什么顺序是这样的:
1. 先要确定从那张表取数据
2. 过滤掉不想要的数据
3. 对数据进行分组
4. 分组之后过滤出自己需要的数据
5. 查出自己需要的字段
6. 最后对数据进行排序,适合自己分析数据的顺序

-- 给表达式命别名

select sum(e.sal) as sum_sal
         ,avg(e.sal) as avg_sal
         ,max(e.sal) as max_sal
         ,min(e.sal) as min_sal
  from emp e;

-- 字段别名不可以是不连续的字符
 select avg(e.sal) as Summation sal

解决方法为: select avg(e.sal) as "Summation sal"
                         from emp e;

-- 字符字段可以用来求大小 不能用来相加或者求平均

-- 报错原因为:不是group by表达式
-- 数据分组之后每一组只有一条数据,每一组对应的job有多个值 它不知道把谁放进来,所以报错。
select e.deptno
         ,e.job
         ,avg(e.sal) as avg_sal
  from emp e
group by e.deptno;

-- group by 去重

select e.deptno,e.job
   from emp e
 group by e.deptno,e.job;

-- 多字段分组聚合
select e.deptno
         ,e.job
         ,avg(e.sal) as avg_sal
  from emp e
group by e.deptno,e.job;

-- 多字段分组聚合过滤
select e.deptno
         ,e.job
         ,avg(e.sal) as avg_sal
  from emp e
 group by e.deptno,e.job
having avg(e.sal) > 1500;

最新文章

  1. 读IT小小鸟有感
  2. ORA-01747: user.table.column, table.column 或列说明无效
  3. Android 2.x中使用actionbar - Actionbarsherlock
  4. 移动前端UI选择
  5. C#微信公众号开发系列教程五(接收事件推送与消息排重)
  6. react.js table组件【可以直接使用】
  7. 如何切入 Linux 内核源代码
  8. 循序渐进Linux 3:Linux下软件安装与管理
  9. ls -l 列表信息详解
  10. [Tommas] 一种有效的测试策略(转)
  11. Asp.net: WebForm基础上构建Mvc的方法
  12. 用MVC4练习,后台用aspx,数据库DemoDb《MvcUserDemo》
  13. (转)设置 UILabel 和 UITextField 的 Padding 或 Insets (理解UIEdgeInsets)
  14. nginx自定义模块记录上游服务器特定响应头
  15. Swift调用Objective-C编写的代码(颜色选择器KKColorListPicker调用)
  16. SQLServer 使用 @@ERROR
  17. Codeforces Round #350 (Div. 2)_D2 - Magic Powder - 2
  18. CSS3伪类实现动画旋转效果
  19. CopyOnWriteArrayList并发容器
  20. js 切换全屏

热门文章

  1. Firefox彻底禁用自动更新提示
  2. js match方法
  3. WPF学习笔记-数据采集与监控项目03-课程总览(ItemsControl控件)
  4. VP做弹出窗体:查询数据并回传
  5. 前端面试-经典的Vue面试题
  6. 自定义select组件
  7. py14模块简介
  8. python翻译(一)
  9. 高CPU Java应用分析
  10. easyui 使用技巧