-
select max (avg(sal))
from emp
group by deptno;
查看全部 -
select deptno ,avg(sal) 平均工资
from emp
group by deptno
order by 2 ---这里代表第二个元素 也可以改成 别名 平均工资 结果一样 或者直接把函数复制过来
desc降序
查看全部 -
where 后面不能使用 组函数 多函数 之类的
这是他与 having的区别
having是先分组再过滤 比如你要部门编号为10的 员工 他会先按编号分组
where 是直接过滤 在分组
但是从sql优化上 尽量选择where
ora-00934
查看全部 -
select avg (表中列字段) ,sum (表中列字段) from 表; --列出 表中字段的平均值,和
select max (表中的字段), min (表中的字段) from 表 ; --列出表中字段的 最大值 最小值
select count(*) from 表; 输出这个表中一共有的数据条数
select count(distinct 表中字段) from 表; 输出表中不重复字段的个数
distinct 用于去重查看全部 -
select deptno ,avg(sal)
from emp
group by deptno ; --按照部门编号分组
select a,b,c ,组函数(x)
from table
group by a ; --这里应该写a,b,c 不能只写a 通过部门号 然后通过b c条件接着分组
只写a ora-00937 非法使用分组函数
在select 列表中所有未包含的组函数中的列 group by中都应该写
select avg(sal)
from emp
group by deptno; --这种不会展示deptno查看全部 -
select sum(sal)/count(*) , sum(sal)/count(sal) , avg(sal) from emp ;
count(*) 会包含空值的个数
分组函数会自动过滤掉空值
nvl函数 使得分组函数不忽略空值
nvl(comm,0) 这个函数的意思是 当该字段为空的时候返回第二个参数
当字段不为空 返回他本身
这个函数可用于自增的输入
nvl(max(sno),0))+1 最大值加一 可用于插入数据的编号查看全部 -
select count(*),count(nvl (comm,0) from emp;
空值返回0,非空返回comm的值
查看全部 -
select 字段1,avg(字段2)
from 表名
group by 字段1,字段2
order by 字段1;
查看全部 -
多行子查询中的空值问题查看全部
-
子查询主要问题
查看全部 -
Select
(Select Count(*) From emp)total,
(Select Count(*) From emp Where to_char(hiredate,'yyyy')='1980') "1980",
(Select Count(*) From emp Where to_char(hiredate,'yyyy')='1981') "1981",
(Select Count(*) From emp Where to_char(hiredate,'yyyy')='1982') "1982",
(Select Count(*) From emp Where to_char(hiredate,'yyyy')='1987') "1987"
From dual;
Select um(Decode(to_char(hiredate,'yyyy'),'1980',1,0)) "1980",
Sum(Decode(to_char(hiredate,'yyyy'),'1981',1,0))"1981",
Sum(Count(*) totla ,
SDecode(to_char(hiredate,'yyyy'),'1982',1,0)) "1982",
Sum(Decode(to_char(hiredate,'yyyy'),'1987',1,0)) "1987"
From emp ;
查看全部 -
单行子查询注意点查看全部
-
使用行号需要注意的两个问题查看全部
-
不知道查询的结果是不是保证顺序的,比如'1,2,3,4'的结果应该是'张三,李四,王五,赵六',而如果是'1,3,2,4',那么结果应该是'张三,王五,李四,赵六',下列查询语句应该可以解决,不知还有没有更简便的语句
SELECT B.CI_ID, MAX(B.WM) STU_NAME FROM (SELECT A.CI_ID, WM_CONCAT(A.STU_NAME) OVER(PARTITION BY A.CI_ID ORDER BY A.CI_ID, A.P) WM FROM (SELECT PC.CI_ID, PS.STU_NAME, INSTR(PC.STU_IDS, PS.STU_ID) P FROM PM_CI PC, PM_STU PS WHERE INSTR(PC.STU_IDS, PS.STU_ID) > 0 ORDER BY CI_ID) A) B GROUP BY B.CI_ID;
查看全部 -
SELECT COUNT(*) TOTAL, SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1980',1,0)) "1980", SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1981',1,0)) "1981", SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1982',1,0)) "1982", SUM(DECODE(TO_CHAR(HIREDATE,'yyyy'),'1987',1,0)) "1987" FROM EMP A
查看全部
举报