《卸甲笔记》-分组统计查询对比

简介:

统计函数对比
1查询出公司每个月支出的月工资总和
Oracle

SQL> select SUM(sal) from emp;

  SUM(SAL)
----------
     29025

PPAS

scott=# select SUM(sal) from emp;
   sum    
----------
 29025.00
(1 row)

2查询出公司的最高工资,最低工资,平均工资
Oracle

SQL> select AVG(sal),ROUND(AVG(sal),2),MAX(sal),MIN(sal) from emp;

  AVG(SAL) ROUND(AVG(SAL),2)   MAX(SAL)   MIN(SAL)
---------- ----------------- ---------- ----------
2073.21429         2073.21       5000        800

PPAS

scott=# select AVG(sal),ROUND(AVG(sal),2),MAX(sal),MIN(sal) from emp;
          avg          |  round  |   max   |  min   
-----------------------+---------+---------+--------
 2073.2142857142857143 | 2073.21 | 5000.00 | 800.00
(1 row)

3统计出公司最早雇佣和最晚雇佣的雇佣日期
Oracle

SQL> select MIN(hiredate) 最早雇佣日期,MAX(hiredate) 最晚雇佣日期 from emp;

最早雇佣日期 最晚雇佣日期
------------ ------------
17-DEC-80    23-MAY-87

PPAS

scott=# select MIN(hiredate) 最早雇佣日期,MAX(hiredate) 最晚雇佣日期 from emp;
    最早雇佣日期    |    最晚雇佣日期    
--------------------+--------------------
 17-DEC-80 00:00:00 | 23-MAY-87 00:00:00
(1 row)

4统计公司中间的工资值
Oracle

SQL> select MEDIAN(sal) from emp;

MEDIAN(SAL)
-----------
       1550

PPAS

PPAS中没有求中位数的函数

5统计工资的标准差与方差
Oracle

SQL> select STDDEV(sal),VARIANCE(sal) from emp;

STDDEV(SAL) VARIANCE(SAL)
----------- -------------
 1182.50322    1398313.87

PPAS

scott=# select STDDEV(sal),VARIANCE(sal) from emp;
      stddev       |       variance       
-------------------+----------------------
 1182.503223516272 | 1398313.873626373626
(1 row)

6统计出公司的雇员人数
Oracle

SQL> select COUNT(empno),COUNT(*) from emp;

COUNT(EMPNO)   COUNT(*)
------------ ----------
      14         14

PPAS

scott=# select COUNT(empno),COUNT(*) from emp;
 count | count 
-------+-------
    14 |    14
(1 row)

7验证COUNT(*)、COUNT(字段)、COUNT(DISTINCT 字段)的使用区别
Oracle

SQL>  select COUNT(*),COUNT(ename),COUNT(comm),COUNT(DISTINCT job) from emp;

  COUNT(*) COUNT(ENAME) COUNT(COMM) COUNT(DISTINCTJOB)
---------- ------------ ----------- ------------------
    14         14       4             5

PPAS

scott=# select COUNT(*),COUNT(ename),COUNT(comm),COUNT(DISTINCT job) from emp;
 count | count | count | count 
-------+-------+-------+-------
    14 |    14 |     4 |     5
(1 row)

8验证3中COUNT()函数的使用方式
Oracle

SQL> select COUNT(ename),AVG(sal),SUM(sal),MAX(sal),MIN(sal) from bonus; 

COUNT(ENAME)   AVG(SAL)   SUM(SAL)   MAX(SAL)    MIN(SAL)
------------ ---------- ---------- ---------- ----------
       0

PPAS

scott=# select COUNT(ename),AVG(sal),SUM(sal),MAX(sal),MIN(sal) from bonus; 
 count | avg | sum | max | min 
-------+-----+-----+-----+-----
     0 |     |     |     |    
(1 row)

单字段分钟统计
9统计出每个部门的人数
Oracle

SQL> select deptno,COUNT(*)
  2  from emp
  3  GROUP BY deptno;

DEPTNO   COUNT(*)
---------- ----------
    30        6
    20        5
    10        3

PPAS

scott=# select deptno,COUNT(*)
scott-# from emp
scott-# GROUP BY deptno;
 deptno | count 
--------+-------
     20 |     5
     30 |     6
     10 |     3
(3 rows)

10统计出每种职位的最低工资和最高工资
Oracle

SQL> select job,MIN(sal),MAX(sal)
  2  from emp
  3  GROUP BY job;

JOB         MIN(SAL)    MAX(SAL)
---------- ---------- ----------
CLERK          800        1300
SALESMAN     1250        1600
PRESIDENT     5000        5000
MANAGER      2450        2975
ANALYST      3000        3000

PPAS

scott=# select job,MIN(sal),MAX(sal)
scott-# from emp
scott-# GROUP BY job;
    job    |   min   |   max   
-----------+---------+---------
 SALESMAN  | 1250.00 | 1600.00
 CLERK     |  800.00 | 1300.00
 MANAGER   | 2450.00 | 2975.00
 PRESIDENT | 5000.00 | 5000.00
 ANALYST   | 3000.00 | 3000.00
(5 rows)

11在没有分组语句(GROUP BY)时使用统计函数后出现其他字段
Oracle

SQL> select deptno,COUNT(EMPNO) from emp;
select deptno,COUNT(EMPNO) from emp
       *
ERROR at line 1:
ORA-00937: not a single-group group function

PPAS

scott=# select deptno,COUNT(EMPNO) from emp;
ERROR:  column "emp.deptno" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select deptno,COUNT(EMPNO) from emp;

12在没有分组的时候只允许单独使用统计函数
Oracle

SQL>  select COUNT(empno) from emp;

COUNT(EMPNO)
------------
      14
PPAS
scott=# select COUNT(empno) from emp;
 count 
-------
    14
(1 row)

本连载博客主要探讨Oracle与PPAS(PostgreSQL)数据库的差异,以帮助更多读者了解如何实现数据库迁移!

目录
相关文章
|
6月前
|
关系型数据库 MySQL
Mysql基础第九天,过滤数据
Mysql基础第九天,过滤数据
47 0
Mysql基础第九天,过滤数据
|
1月前
|
SQL 算法 关系型数据库
浅析MySQL优化器统计信息
本文基于MySQL 8.0.34版本的源代码,详细介绍了MySQL中统计信息的计算和更新机制。文章首先概述了`records_per_key`统计信息在代价估计和Join Reorder算法中的重要性,接着了InnoDB统计信息的存储和计算方法,包括表级和索引级的统计信息。文章还介绍了统计信息的采样算法,特别是重要性采样在减少估计方差中的应用。此外,文章讨论了统计信息的更新时机,包括手动更新和自动更新。最后,文章简要介绍了直方图和其它统计信息,如表在内存中的占比估计,并通过实例展示了如何使用optimizer trace来分析查询优化过程。希望本文能帮助读者更好地理解MySQL的优化器。
|
6月前
|
关系型数据库 MySQL
Mysql基础第十六天,分组数据
Mysql基础第十六天,分组数据
31 0
|
数据挖掘
白话Elasticsearch41-深入聚合数据分析之案例实战__过滤+聚合:统计价格大于2000的电视平均价格
白话Elasticsearch41-深入聚合数据分析之案例实战__过滤+聚合:统计价格大于2000的电视平均价格
93 0
SQl课程实验(外连接,聚集函数,分组,行数限制)
文章目录 1.看完这篇文章你会得到什么 2.实验内容 1. 查询没有任何学生选学的课程编号和课程名称及学分 2. 查询每个班学生入学成绩最高分和最低分的差距,列名为“最大分差” 3. 查询至少选修了三门课程的学生编号 4.统计各个班级男生和女生的平均年龄及人数。 5.查询至少被两名学生选修的课程名称 6. 查询计算机学院至少有两门课的成绩在80以上的女学生学号、姓名和出生日期及其期末成绩的最高分 7. 查询所选课程期末成绩平均分在85分以上的“女”学生学号、姓名、期末成绩平均分 8. 查询“马克思主义基本原理”期末成绩排在6-10名的学生学号、姓名和期末成绩
116 0
SQl课程实验(外连接,聚集函数,分组,行数限制)
|
关系型数据库 MySQL 数据库
MySql基础-笔记6 -排序、分组、连接的使用、NULL值处理
MySql基础-笔记6 -排序、分组、连接的使用、NULL值处理
197 0
MySql基础-笔记6 -排序、分组、连接的使用、NULL值处理
|
存储 数据挖掘 BI
【python数据分析】数据的分组,遍历,统计
数据的分组,遍历,统计 俗话说:“人与类聚,物以群分”,到这里我们将学习数据的分组以及分组后统计。Pandas的分组相对于Excel会更加简单和灵活。
【python数据分析】数据的分组,遍历,统计
多表查询链接查询 SQL22统计每个学校的答过题的用户的平均答题数
多表查询链接查询 SQL22统计每个学校的答过题的用户的平均答题数
277 0
多表查询链接查询 SQL22统计每个学校的答过题的用户的平均答题数
LeetCode SQL专项练习 (7) 计算函数&分组统计
LeetCode SQL专项练习 (7) 计算函数&分组统计
128 0
【硬着头皮】 你在筛选List里面的数据么?
【硬着头皮】 你在筛选List里面的数据么?
【硬着头皮】 你在筛选List里面的数据么?
下一篇
无影云桌面