- 浏览: 40787 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
voiter-2000:
谢谢,帮我解决了一个问题,非常感谢
EXT里的EditorGridPanel -
ynstudio:
javaXX 写道我一直不清楚 Dom4j 和 SAX有什么区 ...
JAVA技术:XML配置文件的读取处理 -
dyx1564335:
好专业啊 有点蒙
JAVA技术:XML配置文件的读取处理 -
xmx0632:
特别讨厌看到一段段被注释掉,而且没一点说明为啥注释掉而不删除的 ...
编写清晰整洁的代码 -
shxiao:
如果你的程序不值得注释,那么他也很可能也不值得运行---狂晕
...
编写清晰整洁的代码
1:找出公司里收入最高的前三名员工:^\tJR8
©http://www.java125.cn (CgIsc
SQL> select rownum, last_name, salaryB.o
2 from (select last_name, salary"T+Rh
3 from s_empY1VYj
4 order by salary desc)Zb#
5 where rownum<=3;/h
©http://www.java125.cn A3&/
ROWNUM LAST_NAME SALARYEA(
---------- ------------------------- ----------M/i
1 Velasquez 4750nx!j2*
2 Ropeburn 2945-US-
3 Nguyen 2897.5xOK
©http://www.java125.cn |U
©http://www.java125.cn VMY$\
注意:请大家分析一下一下语句为什么不对:9Ga,
©http://www.java125.cn )
SQL> select rownum, last_name, salary^u|>;i
2 from s_emp2%
3 where rownum<=3t}$
4 order by salary desc;s
©http://www.java125.cn ]
ROWNUM LAST_NAME SALARYp
---------- ------------------------- ----------|Nr!
1 Velasquez 4750"
3 Nagayama 2660N#1m~
2 Ngao 2000;
©http://www.java125.cn %YH+K
©http://www.java125.cn to&Uz?
2: 找出表中的某一行或某几行的数据:mhaT
©http://www.java125.cn 0S+Y
(1):找出表中第三行数据:UB
用以下方法是不行的,因为rownum后面至可以用<或<=号,不可以用=,>号和其它的比较符号。!yM]&
©http://www.java125.cn <JARz
SQL> select * from s_empJ:vs
2 where rownum=3;p
©http://www.java125.cn B+
no rows selectedy,h}H}
©http://www.java125.cn "<F#
SQL> select * from s_empAXCc
2 where rownum between 3 and 5;xMxX5
©http://www.java125.cn )5/3Pk
no rows selecteds^`
©http://www.java125.cn !
正确的方法如下:<
©http://www.java125.cn pda
SQL> l=e
1 select last_name, salary1N%S
2 from (select rownum a, b.*Gl5k;^
3 from s_emp b)E
4* where a=3HAZvS
SQL> /P
©http://www.java125.cn $$&
LAST_NAME SALARYm@
------------------------- ----------SY+~sc
Nagayama 2660.E
©http://www.java125.cn U;^s
(2):找出第三行到第五行之间的数据::
SQL> ldbQ7f
1 select last_name, salaryct`opn
2 from (select rownum a, b.*J=(=`x
3 from s_emp b)'
4* where a between 3 and 5 ?"9
SQL> /:
©http://www.java125.cn vB
LAST_NAME SALARYWV4%|
------------------------- ----------J=
Nagayama 2660h
Quick-To-See 2755!F]]
Ropeburn 2945%|.".8
©http://www.java125.cn iLq]X
3:找出那些工资高于他们所在部门的平均工资的员工。(x>2
©http://www.java125.cn ~aJf
(1):第一种方法:"Fo
SQL> select last_name, dept_id, salary:ry/t
2 from s_emp a[
3 where salary>(select avg(salary)K
4 from s_empf>y
5 where dept_id=a.dept_id);m!0]
©http://www.java125.cn &A
LAST_NAME DEPT_ID SALARYIK[{6
------------------------- ---------- ----------&az[<
Velasquez 50 4750hn.Q
Urguhart 41 2280M
Menchu 42 2375x9Xd
Biri 43 2090N
Catchpole 44 2470h<
Havel 45 2483.3]R_H
Nguyen 34 2897.5Rj*
Maduro 41 2660.+x,rO
Nozaki 42 2280Fhit?F
Schwartz 45 2090D+
©http://www.java125.cn H-~6
10 rows selected.\
©http://www.java125.cn 0&
(2):第二种方法:/4i.q[
SQL> lM@{mcG
1 select a.last_name, a.salary, a.dept_id, b.avgsal)7w
2 from s_emp a, (select dept_id, avg(salary) avgsalG&7r
3 from s_empyi_
4 group by dept_id) b9I
5 where a.dept_id=b.dept_idAD
6* and a.salary>b.avgsal[9P2P+
SQL> /]c
©http://www.java125.cn d18
LAST_NAME SALARY DEPT_ID AVGSALGnJ,a*
------------------------- ---------- ---------- ----------y}
Velasquez 4750 50 3847.58Ir<F
Urguhart 2280 41 2181.5k\t/iO
Menchu 2375 42 2055.16667-f`
Biri 2090 43 1710i"m
Catchpole 2470 44 1995FRv
Havel 2483.3 45 2069.1P![=R
Nguyen 2897.5 34 2204"A
Maduro 2660 41 2181.51pu}
Nozaki 2280 42 2055.16667*:
Schwartz 2090 45 2069.1v)o2FE
©http://www.java125.cn f'0
10 rows selected..\:
©http://www.java125.cn 87O0
4:找出那些工资高于他们所在部门的manager的工资的员工。X
©http://www.java125.cn MaC
SQL> lb-x`5F
1 select id, last_name, salary, manager_id%W
2 from s_emp aX Pn
3 where salary>(select salarywXQ`C
4 from s_empXz4^
5* where id=a.manager_id)qU
SQL> /g!
©http://www.java125.cn EkSt>1
ID LAST_NAME SALARY MANAGER_ID9B[T!
---------- ------------------------- ---------- ---------- <
6 Urguhart 2280 2n O
7 Menchu 2375 2(8.!62
8 Biri 2090 2g`Z'8
9 Catchpole 2470 2Fz
10 Havel 2483.3 2>7MC
12 Giljum 2831 3cH2
13 Sedeghi 2878.5 3kF,d&
14 Nguyen 2897.5 3fKS5{"
15 Dumas 2755 3mCUT
16 Maduro 2660 6(/Oru)
©http://www.java125.cn %
10 rows selected.o5<Yj
©http://www.java125.cn .m
©http://www.java125.cn 9H8
找出部门工资排名第二,三的员工8
©http://www.java125.cn rm8\*+
1 select name,salary,deptno from (D9d
2 select concat(last_name,first_name) name,salary,department_id deptno,w2fy
3 rank() over (partition by department_id order by salary desc) rnkh'W+
4* from employees) where rnk=2 or rnk=3l!"@
SQL> /.
©http://www.java125.cn zdf`?
NAME©http://www.java125.cn =
--------------------------------------------------------------------------------z]OY
SALARY DEPTNO,A[
---------- ----------I:
FayPat9M
6000 20il
©http://www.java125.cn -
KhooAlexander;}=D\$
3100 30sgi_'0
©http://www.java125.cn f20;
BaidaShelliFk
2900 309+'y
©http://www.java125.cn #*:<.
©http://www.java125.cn JBZH$(
NAME©http://www.java125.cn ;j?8
--------------------------------------------------------------------------------TT
SALARY DEPTNOWd
---------- ----------Z
WeissMatthew^Y
8000 50i#S
©http://www.java125.cn cy_F
KauflingPayam?{jb
7900 50;FuL@
©http://www.java125.cn 1>
ErnstBrucexe[AM1
6000 60MS_
©http://www.java125.cn 4
©http://www.java125.cn '
NAME©http://www.java125.cn {mv/l&
--------------------------------------------------------------------------------^
SALARY DEPTNO~<th7w
---------- -----------;Hqq
AustinDavid;
4800 60[htf
©http://www.java125.cn w{D
PataballaVallish)
4800 60WZx(
©http://www.java125.cn !hb$
PartnersKaren*GM5v=
13500 80`:>LA
©http://www.java125.cn TVD>o
©http://www.java125.cn U (?
NAME©http://www.java125.cn 76%
--------------------------------------------------------------------------------K9
SALARY DEPTNOjJ5,
---------- ----------{L$e
ErrazurizAlbertoBPd@
12000 80@_)
©http://www.java125.cn +U@%
KochharNeena%=
17000 907=!
©http://www.java125.cn WS4\
De HaanLexJm
17000 90*
©http://www.java125.cn m
©http://www.java125.cn -
NAME©http://www.java125.cn 8kJ
--------------------------------------------------------------------------------17C
SALARY DEPTNO9='=!
---------- ----------an
FavietDaniel"
9000 100E{7Av
©http://www.java125.cn ,\`J=$
ChenJohn%4!J4J
8200 100+Xb
©http://www.java125.cn 6G{7
GietzWilliam(Z]r
8300 11033]
©http://www.java125.cn >=c(
©http://www.java125.cn :ru
15 rows selected.&|{
©http://www.java125.cn o
SQL>h
©http://www.java125.cn O
找出部门工资排名第二,三的员工a%
©http://www.java125.cn hz
1 select name,salary,deptno from (igD/)
2 select concat(last_name,first_name) name,salary,department_id deptno,9
3 rank() over (partition by department_id order by salary desc) rnkc`QN
4* from employees) where rnk=2 or rnk=3A[A
SQL> /HCAU
©http://www.java125.cn v
NAME©http://www.java125.cn 7l2
--------------------------------------------------------------------------------:lAOP
SALARY DEPTNOy
---------- ----------aY
FayPatn@B_l
6000 20t
©http://www.java125.cn ];OTJ
KhooAlexander9jP<~J
3100 30PYXF.@
©http://www.java125.cn F#
BaidaShellin
2900 30X
©http://www.java125.cn \Gro<
©http://www.java125.cn &4
NAME©http://www.java125.cn jmWoJ
--------------------------------------------------------------------------------z
SALARY DEPTNOU
---------- ----------x^f
WeissMatthew$X`[YM
8000 50i
©http://www.java125.cn ]m?
KauflingPayam0oP
7900 50?D<g,2
©http://www.java125.cn / \t
ErnstBruce.s
6000 60/Qx?U$
©http://www.java125.cn )X
©http://www.java125.cn '
NAME©http://www.java125.cn CkO3
--------------------------------------------------------------------------------wl}:Hh
SALARY DEPTNOC+G
---------- ----------'B
AustinDavid(u
4800 60NIHX
©http://www.java125.cn `K
PataballaVallih0Y:
4800 60Y
©http://www.java125.cn 4-r
PartnersKaren)58
13500 80Ve5@
©http://www.java125.cn 7K
©http://www.java125.cn h2[Bp
NAME©http://www.java125.cn S*
-------------------------------------------------------------------------------- ~TBW
SALARY DEPTNO3
---------- ----------~
ErrazurizAlberto?5_
12000 806_
©http://www.java125.cn v}@FmE
KochharNeenaI!?2WZ
17000 90W
©http://www.java125.cn CNN
De HaanLexyvWR3h
17000 905<l
©http://www.java125.cn $p_y2u
©http://www.java125.cn }+('_.
NAME©http://www.java125.cn w~2#M
--------------------------------------------------------------------------------7A-sI
SALARY DEPTNOD:"-
---------- ----------eE
FavietDanielpy/@lK
9000 100i*{1]
©http://www.java125.cn 3",@n
ChenJohnFt?
8200 100?XY:M]
©http://www.java125.cn {
GietzWilliamgvsb
8300 110a1D
©http://www.java125.cn Hu~&T
©http://www.java125.cn 2
15 rows selected.-h*DI
©http://www.java125.cn 6W-2v
SQL>f;QD
©http://www.java125.cn x
又是一道面试题:q9#
©http://www.java125.cn "&P@
原表:©http://www.java125.cn RB
©http://www.java125.cn g
id proid pronameC.
1 1 M©http://www.java125.cn $l?6 {
1 2 F©http://www.java125.cn rCqS
2 1 N©http://www.java125.cn {q
2 2 G©http://www.java125.cn v
3 1 B©http://www.java125.cn ^p
3 2 A©http://www.java125.cn ;-*l
查询后的表:IC?w~"
©http://www.java125.cn mqW
id pro1 pro2!#m_k/
1 M F©http://www.java125.cn }[;lR
2 N G©http://www.java125.cn }p0R
3 B A©http://www.java125.cn x/_ek
写出查询语句 ,c
©http://www.java125.cn "
又是一道面试题:\s
©http://www.java125.cn PKQP]
原表:©http://www.java125.cn QPZ
©http://www.java125.cn S/zVKy
id proid pronameM*V|
1 1 M©http://www.java125.cn "R
1 2 F©http://www.java125.cn ,
2 1 N©http://www.java125.cn tFkS~
2 2 G©http://www.java125.cn J:zU n
3 1 B©http://www.java125.cn ^cE!
3 2 A©http://www.java125.cn g
查询后的表:LdL@.d
©http://www.java125.cn Vnol
id pro1 pro29OC]
1 M F©http://www.java125.cn D.waa
2 N G©http://www.java125.cn \sOh\
3 B A©http://www.java125.cn &:(
写出查询语句 H
©http://www.java125.cn Z2?Uh
又是一道面试题:p.P
©http://www.java125.cn Ro(V
原表:©http://www.java125.cn XXUc
©http://www.java125.cn ^Cyx
id proid proname~_?q['
1 1 M©http://www.java125.cn 4)hg
1 2 F©http://www.java125.cn KBRrK
2 1 N©http://www.java125.cn $Qeeeb
2 2 G©http://www.java125.cn rIBy
3 1 B©http://www.java125.cn !v=(J
3 2 A©http://www.java125.cn j+NbN
查询后的表:s0Gb
©http://www.java125.cn )Z
id pro1 pro29E.JF
1 M F©http://www.java125.cn zt+!#u
2 N G©http://www.java125.cn y6)[(
3 B A©http://www.java125.cn %Ps'V
写出查询语句 w
©http://www.java125.cn 69|}
又是一道面试题: 1wH
©http://www.java125.cn D
原表: z&
©http://www.java125.cn ^
id proid proname .\Cg|
1 1 M ~W
1 2 F ;uk
2 1 N /@&B
2 2 G U[.r)k
3 1 B > &
3 2 A (*
查询后的表: K
©http://www.java125.cn u
id pro1 pro2 %@a^
1 M F -_E
2 N G _?Pt4g
3 B A md-
写出查询语句 k[z`F
©http://www.java125.cn 'f+P;0
解决方案可有以下三种作参考:mA
©http://www.java125.cn T:x
©http://www.java125.cn tr`,9S
1:使用pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制。 <wB"n
下面是一个例子 |D
create or replace type strings_table is table of varchar2(20);\]+
/©http://www.java125.cn I
create or replace function merge (pv in strings_table) return varchar2%dR
is©http://www.java125.cn K@|;z~
ls varchar2(4000);f#dhK-
begin©http://www.java125.cn NA_2
for i in 1..pv.count loop-<
ls := ls || pv(i);l;s6
end loop;>yZ
return ls;hR!'F
end;Q"
/©http://www.java125.cn }j'-[
create table t (id number,name varchar2(10));4n
insert into t values(1,'Joan');PeQnD@
insert into t values(1,'Jack');hMEtal
insert into t values(1,'Tom');Ni)
insert into t values(2,'Rose');.
insert into t values(2,'Jenny');\'N
©http://www.java125.cn uk&$4
column names format a80;a<
select t0.id,merge(cast(multiset(select name from t where t.id = t0.id) as strings_table)) names 1i4
from (select distinct id from t) t0;)&
©http://www.java125.cn k5<5h
drop type strings_table;q#?
drop function merge;>T
drop table t;#
©http://www.java125.cn 5\F}G
©http://www.java125.cn "\ n
2:用sql: nr~>
©http://www.java125.cn i:v
Well if you have a thoretical maximum, which I would assume you would given the legibility of listing hundreds of employees in the way you describe then yes. But the SQL needs to use the LAG function for each employee, hence a hundred emps a hundred LAGs, so kind of bulky. \OfJmF
©http://www.java125.cn !F&
This example uses a max of 6, and would need more cut n pasting to do more than that. fzY
©http://www.java125.cn wr
©http://www.java125.cn U-
SQL> select deptno, dname, emps ;"xD@]
2 from ( '
3 select d.deptno, d.dname, rtrim(e.ename ||', '|| I/U
4 lead(e.ename,1) over (partition by d.deptno Z;
5 order by e.ename) ||', '|| a
6 lead(e.ename,2) over (partition by d.deptno 2Luw
7 order by e.ename) ||', '|| K
8 lead(e.ename,3) over (partition by d.deptno 1fJ-K?
9 order by e.ename) ||', '|| AWL<
10 lead(e.ename,4) over (partition by d.deptno Y
11 order by e.ename) ||', '|| @7k1
12 lead(e.ename,5) over (partition by d.deptno j
13 order by e.ename),', ') emps, 97xb
14 row_number () over (partition by d.deptno Uw
15 order by e.ename) x Zr8DO
16 from emp e, dept d ZY`E
17 where d.deptno = e.deptno !K;@
18 ) ©http://www.java125.cn 9
19 where x = 1 59
20 / ©http://www.java125.cn x'4
©http://www.java125.cn u9~7
DEPTNO DNAME EMPS d
------- ----------- ------------------------------------------ SZCh<p
10 ACCOUNTING CLARK, KING, MILLER K9u
20 RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH 'xy'u&
30 SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD8
©http://www.java125.cn "
©http://www.java125.cn }:':
3:先用pl/sql创建一个函数(create function get_a2); 'sLZ
create or replace function get_a2( tmp_a1 number) 5{
return varchar2 >7
is ©http://www.java125.cn OB:M
Col_a2 varchar2(4000); n
begin C8&
Col_a2:=''; 2
for cur in (select a2 from unite_a where a1=tmp_a1) TDeg7
loop ©http://www.java125.cn \v:F
Col_a2=Col_a2||cur.a2; =Da7
end loop; *9w3
return Col_a2; Ya]
end get_a2; #:&5
©http://www.java125.cn rT]
select distinct a1 ,get_a2(a1) from unite_a <[TuN
1 ABC Q9
2 EFG
©http://www.java125.cn (CgIsc
SQL> select rownum, last_name, salaryB.o
2 from (select last_name, salary"T+Rh
3 from s_empY1VYj
4 order by salary desc)Zb#
5 where rownum<=3;/h
©http://www.java125.cn A3&/
ROWNUM LAST_NAME SALARYEA(
---------- ------------------------- ----------M/i
1 Velasquez 4750nx!j2*
2 Ropeburn 2945-US-
3 Nguyen 2897.5xOK
©http://www.java125.cn |U
©http://www.java125.cn VMY$\
注意:请大家分析一下一下语句为什么不对:9Ga,
©http://www.java125.cn )
SQL> select rownum, last_name, salary^u|>;i
2 from s_emp2%
3 where rownum<=3t}$
4 order by salary desc;s
©http://www.java125.cn ]
ROWNUM LAST_NAME SALARYp
---------- ------------------------- ----------|Nr!
1 Velasquez 4750"
3 Nagayama 2660N#1m~
2 Ngao 2000;
©http://www.java125.cn %YH+K
©http://www.java125.cn to&Uz?
2: 找出表中的某一行或某几行的数据:mhaT
©http://www.java125.cn 0S+Y
(1):找出表中第三行数据:UB
用以下方法是不行的,因为rownum后面至可以用<或<=号,不可以用=,>号和其它的比较符号。!yM]&
©http://www.java125.cn <JARz
SQL> select * from s_empJ:vs
2 where rownum=3;p
©http://www.java125.cn B+
no rows selectedy,h}H}
©http://www.java125.cn "<F#
SQL> select * from s_empAXCc
2 where rownum between 3 and 5;xMxX5
©http://www.java125.cn )5/3Pk
no rows selecteds^`
©http://www.java125.cn !
正确的方法如下:<
©http://www.java125.cn pda
SQL> l=e
1 select last_name, salary1N%S
2 from (select rownum a, b.*Gl5k;^
3 from s_emp b)E
4* where a=3HAZvS
SQL> /P
©http://www.java125.cn $$&
LAST_NAME SALARYm@
------------------------- ----------SY+~sc
Nagayama 2660.E
©http://www.java125.cn U;^s
(2):找出第三行到第五行之间的数据::
SQL> ldbQ7f
1 select last_name, salaryct`opn
2 from (select rownum a, b.*J=(=`x
3 from s_emp b)'
4* where a between 3 and 5 ?"9
SQL> /:
©http://www.java125.cn vB
LAST_NAME SALARYWV4%|
------------------------- ----------J=
Nagayama 2660h
Quick-To-See 2755!F]]
Ropeburn 2945%|.".8
©http://www.java125.cn iLq]X
3:找出那些工资高于他们所在部门的平均工资的员工。(x>2
©http://www.java125.cn ~aJf
(1):第一种方法:"Fo
SQL> select last_name, dept_id, salary:ry/t
2 from s_emp a[
3 where salary>(select avg(salary)K
4 from s_empf>y
5 where dept_id=a.dept_id);m!0]
©http://www.java125.cn &A
LAST_NAME DEPT_ID SALARYIK[{6
------------------------- ---------- ----------&az[<
Velasquez 50 4750hn.Q
Urguhart 41 2280M
Menchu 42 2375x9Xd
Biri 43 2090N
Catchpole 44 2470h<
Havel 45 2483.3]R_H
Nguyen 34 2897.5Rj*
Maduro 41 2660.+x,rO
Nozaki 42 2280Fhit?F
Schwartz 45 2090D+
©http://www.java125.cn H-~6
10 rows selected.\
©http://www.java125.cn 0&
(2):第二种方法:/4i.q[
SQL> lM@{mcG
1 select a.last_name, a.salary, a.dept_id, b.avgsal)7w
2 from s_emp a, (select dept_id, avg(salary) avgsalG&7r
3 from s_empyi_
4 group by dept_id) b9I
5 where a.dept_id=b.dept_idAD
6* and a.salary>b.avgsal[9P2P+
SQL> /]c
©http://www.java125.cn d18
LAST_NAME SALARY DEPT_ID AVGSALGnJ,a*
------------------------- ---------- ---------- ----------y}
Velasquez 4750 50 3847.58Ir<F
Urguhart 2280 41 2181.5k\t/iO
Menchu 2375 42 2055.16667-f`
Biri 2090 43 1710i"m
Catchpole 2470 44 1995FRv
Havel 2483.3 45 2069.1P![=R
Nguyen 2897.5 34 2204"A
Maduro 2660 41 2181.51pu}
Nozaki 2280 42 2055.16667*:
Schwartz 2090 45 2069.1v)o2FE
©http://www.java125.cn f'0
10 rows selected..\:
©http://www.java125.cn 87O0
4:找出那些工资高于他们所在部门的manager的工资的员工。X
©http://www.java125.cn MaC
SQL> lb-x`5F
1 select id, last_name, salary, manager_id%W
2 from s_emp aX Pn
3 where salary>(select salarywXQ`C
4 from s_empXz4^
5* where id=a.manager_id)qU
SQL> /g!
©http://www.java125.cn EkSt>1
ID LAST_NAME SALARY MANAGER_ID9B[T!
---------- ------------------------- ---------- ---------- <
6 Urguhart 2280 2n O
7 Menchu 2375 2(8.!62
8 Biri 2090 2g`Z'8
9 Catchpole 2470 2Fz
10 Havel 2483.3 2>7MC
12 Giljum 2831 3cH2
13 Sedeghi 2878.5 3kF,d&
14 Nguyen 2897.5 3fKS5{"
15 Dumas 2755 3mCUT
16 Maduro 2660 6(/Oru)
©http://www.java125.cn %
10 rows selected.o5<Yj
©http://www.java125.cn .m
©http://www.java125.cn 9H8
找出部门工资排名第二,三的员工8
©http://www.java125.cn rm8\*+
1 select name,salary,deptno from (D9d
2 select concat(last_name,first_name) name,salary,department_id deptno,w2fy
3 rank() over (partition by department_id order by salary desc) rnkh'W+
4* from employees) where rnk=2 or rnk=3l!"@
SQL> /.
©http://www.java125.cn zdf`?
NAME©http://www.java125.cn =
--------------------------------------------------------------------------------z]OY
SALARY DEPTNO,A[
---------- ----------I:
FayPat9M
6000 20il
©http://www.java125.cn -
KhooAlexander;}=D\$
3100 30sgi_'0
©http://www.java125.cn f20;
BaidaShelliFk
2900 309+'y
©http://www.java125.cn #*:<.
©http://www.java125.cn JBZH$(
NAME©http://www.java125.cn ;j?8
--------------------------------------------------------------------------------TT
SALARY DEPTNOWd
---------- ----------Z
WeissMatthew^Y
8000 50i#S
©http://www.java125.cn cy_F
KauflingPayam?{jb
7900 50;FuL@
©http://www.java125.cn 1>
ErnstBrucexe[AM1
6000 60MS_
©http://www.java125.cn 4
©http://www.java125.cn '
NAME©http://www.java125.cn {mv/l&
--------------------------------------------------------------------------------^
SALARY DEPTNO~<th7w
---------- -----------;Hqq
AustinDavid;
4800 60[htf
©http://www.java125.cn w{D
PataballaVallish)
4800 60WZx(
©http://www.java125.cn !hb$
PartnersKaren*GM5v=
13500 80`:>LA
©http://www.java125.cn TVD>o
©http://www.java125.cn U (?
NAME©http://www.java125.cn 76%
--------------------------------------------------------------------------------K9
SALARY DEPTNOjJ5,
---------- ----------{L$e
ErrazurizAlbertoBPd@
12000 80@_)
©http://www.java125.cn +U@%
KochharNeena%=
17000 907=!
©http://www.java125.cn WS4\
De HaanLexJm
17000 90*
©http://www.java125.cn m
©http://www.java125.cn -
NAME©http://www.java125.cn 8kJ
--------------------------------------------------------------------------------17C
SALARY DEPTNO9='=!
---------- ----------an
FavietDaniel"
9000 100E{7Av
©http://www.java125.cn ,\`J=$
ChenJohn%4!J4J
8200 100+Xb
©http://www.java125.cn 6G{7
GietzWilliam(Z]r
8300 11033]
©http://www.java125.cn >=c(
©http://www.java125.cn :ru
15 rows selected.&|{
©http://www.java125.cn o
SQL>h
©http://www.java125.cn O
找出部门工资排名第二,三的员工a%
©http://www.java125.cn hz
1 select name,salary,deptno from (igD/)
2 select concat(last_name,first_name) name,salary,department_id deptno,9
3 rank() over (partition by department_id order by salary desc) rnkc`QN
4* from employees) where rnk=2 or rnk=3A[A
SQL> /HCAU
©http://www.java125.cn v
NAME©http://www.java125.cn 7l2
--------------------------------------------------------------------------------:lAOP
SALARY DEPTNOy
---------- ----------aY
FayPatn@B_l
6000 20t
©http://www.java125.cn ];OTJ
KhooAlexander9jP<~J
3100 30PYXF.@
©http://www.java125.cn F#
BaidaShellin
2900 30X
©http://www.java125.cn \Gro<
©http://www.java125.cn &4
NAME©http://www.java125.cn jmWoJ
--------------------------------------------------------------------------------z
SALARY DEPTNOU
---------- ----------x^f
WeissMatthew$X`[YM
8000 50i
©http://www.java125.cn ]m?
KauflingPayam0oP
7900 50?D<g,2
©http://www.java125.cn / \t
ErnstBruce.s
6000 60/Qx?U$
©http://www.java125.cn )X
©http://www.java125.cn '
NAME©http://www.java125.cn CkO3
--------------------------------------------------------------------------------wl}:Hh
SALARY DEPTNOC+G
---------- ----------'B
AustinDavid(u
4800 60NIHX
©http://www.java125.cn `K
PataballaVallih0Y:
4800 60Y
©http://www.java125.cn 4-r
PartnersKaren)58
13500 80Ve5@
©http://www.java125.cn 7K
©http://www.java125.cn h2[Bp
NAME©http://www.java125.cn S*
-------------------------------------------------------------------------------- ~TBW
SALARY DEPTNO3
---------- ----------~
ErrazurizAlberto?5_
12000 806_
©http://www.java125.cn v}@FmE
KochharNeenaI!?2WZ
17000 90W
©http://www.java125.cn CNN
De HaanLexyvWR3h
17000 905<l
©http://www.java125.cn $p_y2u
©http://www.java125.cn }+('_.
NAME©http://www.java125.cn w~2#M
--------------------------------------------------------------------------------7A-sI
SALARY DEPTNOD:"-
---------- ----------eE
FavietDanielpy/@lK
9000 100i*{1]
©http://www.java125.cn 3",@n
ChenJohnFt?
8200 100?XY:M]
©http://www.java125.cn {
GietzWilliamgvsb
8300 110a1D
©http://www.java125.cn Hu~&T
©http://www.java125.cn 2
15 rows selected.-h*DI
©http://www.java125.cn 6W-2v
SQL>f;QD
©http://www.java125.cn x
又是一道面试题:q9#
©http://www.java125.cn "&P@
原表:©http://www.java125.cn RB
©http://www.java125.cn g
id proid pronameC.
1 1 M©http://www.java125.cn $l?6 {
1 2 F©http://www.java125.cn rCqS
2 1 N©http://www.java125.cn {q
2 2 G©http://www.java125.cn v
3 1 B©http://www.java125.cn ^p
3 2 A©http://www.java125.cn ;-*l
查询后的表:IC?w~"
©http://www.java125.cn mqW
id pro1 pro2!#m_k/
1 M F©http://www.java125.cn }[;lR
2 N G©http://www.java125.cn }p0R
3 B A©http://www.java125.cn x/_ek
写出查询语句 ,c
©http://www.java125.cn "
又是一道面试题:\s
©http://www.java125.cn PKQP]
原表:©http://www.java125.cn QPZ
©http://www.java125.cn S/zVKy
id proid pronameM*V|
1 1 M©http://www.java125.cn "R
1 2 F©http://www.java125.cn ,
2 1 N©http://www.java125.cn tFkS~
2 2 G©http://www.java125.cn J:zU n
3 1 B©http://www.java125.cn ^cE!
3 2 A©http://www.java125.cn g
查询后的表:LdL@.d
©http://www.java125.cn Vnol
id pro1 pro29OC]
1 M F©http://www.java125.cn D.waa
2 N G©http://www.java125.cn \sOh\
3 B A©http://www.java125.cn &:(
写出查询语句 H
©http://www.java125.cn Z2?Uh
又是一道面试题:p.P
©http://www.java125.cn Ro(V
原表:©http://www.java125.cn XXUc
©http://www.java125.cn ^Cyx
id proid proname~_?q['
1 1 M©http://www.java125.cn 4)hg
1 2 F©http://www.java125.cn KBRrK
2 1 N©http://www.java125.cn $Qeeeb
2 2 G©http://www.java125.cn rIBy
3 1 B©http://www.java125.cn !v=(J
3 2 A©http://www.java125.cn j+NbN
查询后的表:s0Gb
©http://www.java125.cn )Z
id pro1 pro29E.JF
1 M F©http://www.java125.cn zt+!#u
2 N G©http://www.java125.cn y6)[(
3 B A©http://www.java125.cn %Ps'V
写出查询语句 w
©http://www.java125.cn 69|}
又是一道面试题: 1wH
©http://www.java125.cn D
原表: z&
©http://www.java125.cn ^
id proid proname .\Cg|
1 1 M ~W
1 2 F ;uk
2 1 N /@&B
2 2 G U[.r)k
3 1 B > &
3 2 A (*
查询后的表: K
©http://www.java125.cn u
id pro1 pro2 %@a^
1 M F -_E
2 N G _?Pt4g
3 B A md-
写出查询语句 k[z`F
©http://www.java125.cn 'f+P;0
解决方案可有以下三种作参考:mA
©http://www.java125.cn T:x
©http://www.java125.cn tr`,9S
1:使用pl/sql代码实现,但要求你组合后的长度不能超出oracle varchar2长度的限制。 <wB"n
下面是一个例子 |D
create or replace type strings_table is table of varchar2(20);\]+
/©http://www.java125.cn I
create or replace function merge (pv in strings_table) return varchar2%dR
is©http://www.java125.cn K@|;z~
ls varchar2(4000);f#dhK-
begin©http://www.java125.cn NA_2
for i in 1..pv.count loop-<
ls := ls || pv(i);l;s6
end loop;>yZ
return ls;hR!'F
end;Q"
/©http://www.java125.cn }j'-[
create table t (id number,name varchar2(10));4n
insert into t values(1,'Joan');PeQnD@
insert into t values(1,'Jack');hMEtal
insert into t values(1,'Tom');Ni)
insert into t values(2,'Rose');.
insert into t values(2,'Jenny');\'N
©http://www.java125.cn uk&$4
column names format a80;a<
select t0.id,merge(cast(multiset(select name from t where t.id = t0.id) as strings_table)) names 1i4
from (select distinct id from t) t0;)&
©http://www.java125.cn k5<5h
drop type strings_table;q#?
drop function merge;>T
drop table t;#
©http://www.java125.cn 5\F}G
©http://www.java125.cn "\ n
2:用sql: nr~>
©http://www.java125.cn i:v
Well if you have a thoretical maximum, which I would assume you would given the legibility of listing hundreds of employees in the way you describe then yes. But the SQL needs to use the LAG function for each employee, hence a hundred emps a hundred LAGs, so kind of bulky. \OfJmF
©http://www.java125.cn !F&
This example uses a max of 6, and would need more cut n pasting to do more than that. fzY
©http://www.java125.cn wr
©http://www.java125.cn U-
SQL> select deptno, dname, emps ;"xD@]
2 from ( '
3 select d.deptno, d.dname, rtrim(e.ename ||', '|| I/U
4 lead(e.ename,1) over (partition by d.deptno Z;
5 order by e.ename) ||', '|| a
6 lead(e.ename,2) over (partition by d.deptno 2Luw
7 order by e.ename) ||', '|| K
8 lead(e.ename,3) over (partition by d.deptno 1fJ-K?
9 order by e.ename) ||', '|| AWL<
10 lead(e.ename,4) over (partition by d.deptno Y
11 order by e.ename) ||', '|| @7k1
12 lead(e.ename,5) over (partition by d.deptno j
13 order by e.ename),', ') emps, 97xb
14 row_number () over (partition by d.deptno Uw
15 order by e.ename) x Zr8DO
16 from emp e, dept d ZY`E
17 where d.deptno = e.deptno !K;@
18 ) ©http://www.java125.cn 9
19 where x = 1 59
20 / ©http://www.java125.cn x'4
©http://www.java125.cn u9~7
DEPTNO DNAME EMPS d
------- ----------- ------------------------------------------ SZCh<p
10 ACCOUNTING CLARK, KING, MILLER K9u
20 RESEARCH ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH 'xy'u&
30 SALES ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD8
©http://www.java125.cn "
©http://www.java125.cn }:':
3:先用pl/sql创建一个函数(create function get_a2); 'sLZ
create or replace function get_a2( tmp_a1 number) 5{
return varchar2 >7
is ©http://www.java125.cn OB:M
Col_a2 varchar2(4000); n
begin C8&
Col_a2:=''; 2
for cur in (select a2 from unite_a where a1=tmp_a1) TDeg7
loop ©http://www.java125.cn \v:F
Col_a2=Col_a2||cur.a2; =Da7
end loop; *9w3
return Col_a2; Ya]
end get_a2; #:&5
©http://www.java125.cn rT]
select distinct a1 ,get_a2(a1) from unite_a <[TuN
1 ABC Q9
2 EFG
发表评论
-
oracle 去重
2010-08-20 15:26 1421oracle去重:综合了别人 ... -
事务(Transaction)
2008-07-15 12:49 958事务(Transaction)是访问并可能更新数据库中各种数据 ... -
为什么要使用索引
2008-07-10 15:40 1560索引方便用户对数据的访问。在应用系统中,为数据库中的表建立正确 ... -
DB2 oralce mysql 取前十条记录对比
2008-06-28 13:35 1572Db2 例子 create table mynumber(id ... -
oracle练习
2008-06-28 02:11 884oracle 练习一: CREATE TABLE ORDER ... -
oracle
2008-06-28 02:01 999基本概念 DDL 数据定义 ...
相关推荐
### Oracle常用命令详解 #### 一、Oracle的启动与关闭 **1. 在单机环境下的启动与关闭** - **启动Oracle系统** - **切换用户:** 首先需要切换到Oracle用户环境。 ```bash su - oracle ``` - **使用`svrmgrl`...
Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句Oracle常用脚本与语句...
Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 ...
ORACLE常用傻瓜问题1000问: 1. Oracle安裝完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp 2. ORACLE9IAS WEB CACHE的初始默认用户和密码...
Oracle 常用函数大全 Oracle 中有许多常用函数,以下是其中一些: 字符函数 1. ASCII:返回与指定的字符对应的十进制数。例如:`SELECT ASCII('A') FROM DUAL;` 返回 65。 2. CHR:给出整数,返回对应的字符。...
oracle 常用命令大全 oracle dba 常用命令 1 运行 SQLPLUS 工具 sqlplus 2 以 OS 的默认身份连接 / as sysdba 3 显示当前用户名 show user 4 直接进入 SQLPLUS 命令提示符 sqlplus /nolog 5 在命令提示符以 OS 身份...
Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...
"oracle常用sql.rar"这个压缩包文件显然包含了关于Oracle数据库中常用SQL语句的集合,这对于学习和工作中解决常见问题非常有帮助。以下是一些Oracle SQL的重要知识点: 1. **锁表查询**: 在Oracle中,锁定数据是...
### Linux下Oracle常用操作知识点详解 #### 一、概述 在Linux环境下管理Oracle数据库时,掌握一系列常用的命令是非常重要的。这些命令可以帮助我们有效地监控、维护和优化数据库性能。本文将详细介绍Linux下Oracle...
### Oracle 常用命令与操作指南 #### 一、Oracle 安装与卸载注意事项 **1.1 Oracle 的安装** - **安装步骤:** 对于 Oracle 的安装,网络上有很多详细的指导教程。在安装过程中,需要注意的是,管理口令部分确保...
本文将基于"oracle常用sql整理"的主题,深入探讨Oracle SQL的一些核心概念、语句及其实用技巧,适合初级到中级水平的学习者。 一、SQL基础 SQL是标准化的查询语言,分为DDL(Data Definition Language)、DML(Data...
### Oracle常用函数与使用方法详解 #### 一、Oracle SQL函数概述 在Oracle数据库中,SQL函数被广泛用于处理各种数据类型,包括数值、字符、日期等,它们能够帮助我们更高效地进行数据检索和分析。本文将详细介绍...
以下是一些关于Oracle常用SQL技巧的经典要点: 1. **避免在SELECT子句中使用“*”**:在SQL查询中,使用通配符“*”代表选择所有列,虽然方便但效率低下。Oracle在解析时需要查询数据字典获取所有列名,增加了额外...
"ORACLE常用问题1000问"很显然是一部针对Oracle数据库常见问题的集锦,旨在帮助用户解决日常运维中可能遇到的各种挑战。通过阅读这部资料,可以深入理解Oracle数据库的工作原理,提高故障排查和性能优化的能力。 ...
"Oracle常用语句-总结文档汇总"提供了丰富的资源,涵盖了SQL语句的基础到进阶应用,包括列行转换、SQL性能优化等多个关键知识点。 首先,列行转换是数据处理中常见的需求,Oracle提供了多种方法来实现这一操作。...
ORACLE 常用分析函数说明 Oracle 分析函数从 8.1.6 版本开始提供,是一种计算基于组的聚合值的函数。它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 开窗函数是分析函数工作的...
"Oracle常用傻瓜问题1000问"显然是一部针对初学者和中级用户设计的指南,涵盖了日常工作中可能遇到的各种常见问题。在这个文档中,我们可以预见到一系列关于安装、配置、管理、查询优化以及故障排查的问答。 1. **...
以下是一些关于ORACLE常用快捷键设置的详细说明: 1. **登录后默认选择"My Objects"**:在PLSQL Developer中,设置登录后默认打开"My Objects"目录而不是"All objects"可以显著提升响应速度,特别是对于DBA用户,...
本文将围绕“Oracle常用的数据库脚本”这一主题,详细讲解Oracle数据库管理中的一些关键脚本和命令,帮助你更好地理解和操作Oracle数据库。 首先,Oracle数据库脚本通常是指SQL(Structured Query Language)脚本,...