-
還有這種騷操作
查看全部 -
可以使用子查詢的位置:where select having from?
1、WHERE?
select * from emp where sal>(select sal from emp where ename='SCOTT')
2、SELECT?
select empno,ename,sal,(select job from emp where empno=7839) 第四列 from emp;
3、HAVING
select deptno,avg(sal) from emp group by deptno having avg(sal)>(select max(sal) from emp where deptno=30);
4、FROM
select? * from (select empno,ename,sal from emp);
查看全部 -
子查詢注意的10個問題
1、子查詢的小括號不要忘
2、子查詢的書寫風格
3、使用子查詢的位置:where,select having ,from
4、不可以使用的子查詢的位置:group by?
5、強調,from 后面的子查詢
6、主查詢和子查詢可以不是同一張表
7、一般不在子查詢中,使用排序;但在Top-N分析問題中,必須對子查詢排序
8、一般先執行子查詢,再執行主查詢;但相關子查詢例外
9、單行子查詢只能使用單行操作符;多行子查詢只能使用多行操作符
10、注意:子查詢中是NULL值問題
查看全部 -
子查詢
比SCOTT的工資高的員工信息
1、查詢SCOTT的工資
select sa; from emp where ename='SCOTT';
2、比SCOTT工資高的員工信息
select * from emp where sal>3000;
子查詢代碼
select * from emp where sal >(select sal from emp where ename='SCOTT');
查看全部 -
declare
cursor cplayer is select height from player;
pheight player.height%type;
counta number:=0;
countb number:=0;
countc number:=0;
countd number:=0;
begin
open cplayer;
loop
fetch cplayer into pheight;
exit when cplayer%notfound;
if pheight>=2.00 and pheight<=2.50 then counta = counta+1
elsif pheight >=1.90 and pheight<=1.99 then countb = countb+1
elsif pheight >=1.80 and pheight<=1.89 then countc = countc+1
else countd = countd+1
end if;
end loop;
close cplayer;
dbms.output.put_line('A類人數'||counta)
dbms.output.put_line('B類人數'||countb)
dbms.output.put_line('C類人數'||countc)
dbms.output.put_line('D類人數'||countd)
end;
/
select 'a',count(height)
from player
where height between 2.00 and 2.50
union all
select 'b',count(height)
from player
where height between 1.90 and 1.99
union all
select 'c',count(height)
from player
where height between 1.80 and 1.89
union all
select 'd',count(height)
from player
where height between 1.60 and 1.79
select sum(decode(height, between 2.00 and 2.50,1,0) A,
sum(decode(height, between 1.90 and 1.99,1,0) B,
sum(decode(height, between 1.80 and 1.89,1,0) C,
sum(decode(height, between 1.60 and 1.79,1,0) D
from player
select?
(select count(*) from player where height between 2.00 and 2.50) A,
(select count(*) from player where height between 1.90 and 1.99) B,
(select count(*) from player where height between 1.80 and 1.89) C,
(select count(*) from player where height between 1.60 and 1.79) D
from dual;
查看全部 -
自連接存在的問題
select e.ename 員工姓名,b.ename 老板姓名
from emp e,emp b
where e.mgr=b.empno;
獲得笛卡爾全集
select count(*) from emp e,emp b;
不適合操作大表
層次查詢(單表查詢)
查看全部 -
自連接
示例:查詢員工姓名和員工的老板姓名
·核心:通過別名,將同一張表視為多張表
查看全部 -
還能get 一個sql 不錯嘛
然后@執行此處腳本
查看全部 -
o 相同的部門號就顯示一次, 不同的部門號跳過兩行,這是sqlplus獨有的吧
查看全部 -
rollup的意義就是遞歸嵌套?
查看全部 -
這么簡單的嵌套嗎 直接在最外層加一個括號函數,看來還是表達的簡單吧
查看全部 -
嵌套不就是所謂的2階嗎
查看全部 -
外連接
示例:按部門統計員工人數,要求顯示:部門號、部門名稱、人數
select d.deptno 部門號, d.dname 部門名稱,count(e.empno) 人數
from emp e,dept d
where e.deptno=d.deptno
group by d.deptno,d.dname;
通過外連接,把對于連接條件不成立的記錄,仍然包含在最后的結果中
左外連接:當連接條件不成立的時候,等號左邊的表仍然被包含
右外連接:當連接條件不成立的時候,等號有邊的表仍然被包含
查看全部 -
a命令的先天缺陷需要后天去改
查看全部 -
sql plus還真是 騷操作挺多 ed編輯 /執行歷史?
1、2、3直接表列,當然這是sql通用的
查看全部
舉報