-
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
查看全部
舉報