继往开来 吐故纳新
日历
网志分类
· 所有网志 (1024)
· 个人作品 (64)
· 软件设计 (33)
· 面向对象编程 (22)
· JavaAPI (44)
· Java开源工具 (36)
· Swing (34)
· Java语法细节 (39)
· 样式表CSS (12)
· XML (9)
· J2EE(JavaEE) (23)
· 算法数据结构 (64)
· 正则表达式 (4)
· 软件知识 (6)
· Java线程 (9)
· Web开发.Jsp/Servlet/Struts (20)
· 程序随想录 (7)
· Hibernate (7)
· Spring (5)
· J2SE 高级 (2)
· J2SE 高级 (0)
· Web开发.Ajax (16)
· Web开发.JavaScript (48)
· DB4O (2)
· Web开发.CSS/Html (22)
· C# (20)
· ERP (4)
· JDBC (1)
· 编程资源 (16)
· 编程感悟 (29)
· DB/Sql (13)
· VB (29)
· VC (2)
· 桌面脚本 (3)
· 新兴软件 (3)
· 英语学习 (21)
· 网文转载 (163)
· 职场风云 (40)
· 诗词歌赋 (32)
· 生活感言 (79)
· 生活常识 (0)
· 奇文共赏 (15)
· 财经纵横 (9)
· 未分类 (17)
站内搜索
友情链接
· 歪酷博客
· 我的歪酷 非非共享界
· 偶要雷锋
· 豆瓣
· nczonline
· 当当网
· easyjf中文站
· Donews
· 天极Java文章列表
· W3CSchool
· taiten的BLOG
· Dojo中国
· Dojo
· Extjs.com
· Lifehack中文网志
· JaveEye的一个AS专题
· Banq's JDon
· Java 中文网址大全
· 梦想Java
· 360Doc个人图书馆
· java开源大全
· 我在硅谷动力的软件下载站
· 站长中国
· 随意贴
· CSS教学素材站
· java 参考中文站
· 面向构件与SOA社区
· 彩字生成
· 派派小说论坛
· 如坐春风
· 英语学习网
· BBC CHina
· www.dlbang.com
· 古文竖排格式在线转化工具
· 免费家谱
· 图片上传基地
· 风景壁纸
· 和风细雨
· MyC#BlogInCsdn

订阅 RSS

0251412

歪酷博客

开此博一为经验积累,二为资料收集,三为同道交流,四为资源共享.
« 上一篇: 【转载】面试进行曲之技术面试(项目经验) 下一篇: 【转载】Java程序员面试宝典 »
转载 @ 2008-08-01 21:03

1:找出公司里收入最高的前三名员工:

SQL> select rownum, last_name, salary
 2  from (select last_name, salary
 3        from s_emp
 4        order by salary desc)
 5  where rownum<=3;

   ROWNUM LAST_NAME                     SALARY
---------- ------------------------- ----------
        1 Velasquez                       4750
        2 Ropeburn                        2945
        3 Nguyen                        2897.5


注意:请大家分析一下一下语句为什么不对:

SQL> select rownum, last_name, salary
 2  from s_emp
 3  where rownum<=3
 4  order by salary desc;

   ROWNUM LAST_NAME                     SALARY
---------- ------------------------- ----------
        1 Velasquez                       4750
        3 Nagayama                        2660
        2 Ngao                            2000


2: 找出表中的某一行或某几行的数据:

(1):找出表中第三行数据:
用以下方法是不行的,因为rownum后面至可以用<或<=号,不可以用=,>号和其它的比较符号。

SQL> select * from s_emp
 2  where rownum=3;

no rows selected

SQL> select * from s_emp
 2  where rownum between 3 and 5;

no rows selected

正确的方法如下:

SQL> l
 1  select last_name, salary
 2  from (select rownum a, b.*
 3        from s_emp b)
 4* where a=3
SQL> /

LAST_NAME                     SALARY
------------------------- ----------
Nagayama                        2660

(2):找出第三行到第五行之间的数据:
SQL> l
 1  select last_name, salary
 2  from (select rownum a, b.*
 3        from s_emp b)
 4* where a between 3 and 5
SQL> /

LAST_NAME                     SALARY
------------------------- ----------
Nagayama                        2660
Quick-To-See                    2755
Ropeburn                        2945

3:找出那些工资高于他们所在部门的平均工资的员工。

(1):第一种方法:
SQL> select last_name, dept_id, salary
 2  from s_emp a
 3  where salary>(select avg(salary)
 4                from s_emp
 5                where dept_id=a.dept_id);

LAST_NAME                    DEPT_ID     SALARY
------------------------- ---------- ----------
Velasquez                         50       4750
Urguhart                          41       2280
Menchu                            42       2375
Biri                              43       2090
Catchpole                         44       2470
Havel                             45     2483.3
Nguyen                            34     2897.5
Maduro                            41       2660
Nozaki                            42       2280
Schwartz                          45       2090

10 rows selected.

(2):第二种方法:
SQL> l
 1  select a.last_name, a.salary, a.dept_id, b.avgsal
 2  from s_emp a, (select dept_id, avg(salary) avgsal
 3               from s_emp
 4               group by dept_id) b
 5  where a.dept_id=b.dept_id
 6* and a.salary>b.avgsal
SQL> /

LAST_NAME                     SALARY    DEPT_ID     AVGSAL
------------------------- ---------- ---------- ----------
Velasquez                       4750         50     3847.5
Urguhart                        2280         41     2181.5
Menchu                          2375         42 2055.16667
Biri                            2090         43       1710
Catchpole                       2470         44       1995
Havel                         2483.3         45     2069.1
Nguyen                        2897.5         34       2204
Maduro                          2660         41     2181.5
Nozaki                          2280         42 2055.16667
Schwartz                        2090         45     2069.1

10 rows selected.

4:找出那些工资高于他们所在部门的manager的工资的员工。

SQL> l
 1  select id, last_name, salary, manager_id
 2  from s_emp a
 3  where salary>(select salary
 4                from s_emp
 5*               where id=a.manager_id)
SQL> /

       ID LAST_NAME                     SALARY MANAGER_ID
---------- ------------------------- ---------- ----------
        6 Urguhart                        2280          2
        7 Menchu                          2375          2
        8 Biri                            2090          2
        9 Catchpole                       2470          2
       10 Havel                         2483.3          2
       12 Giljum                          2831          3
       13 Sedeghi                       2878.5          3
       14 Nguyen                        2897.5          3
       15 Dumas                           2755          3
       16 Maduro                          2660          6


评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定