一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据
来源:互联网 发布:php应聘简历 编辑:程序博客网 时间:2024/05/17 04:48
1:找出公司里收入最高的前三名员工:
SQL> select rownum, last_name, salary
from (select last_name, salary
from s_emp
order by salary desc)
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
select last_name, salary
from (select rownum a, b.*
from s_emp b)
where a=3
SQL> / LAST_NAME SALARY ------------------------- ---------- Nagayama 2660
(2):找出第三行到第五行之间的数据: SQL> l
select last_name, salary
from (select rownum a, b.* from s_emp b)
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
from s_emp a
where salary>(select avg(salary) from s_emp 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
select a.last_name, a.salary, a.dept_id, b.avgsal
from s_emp a, (select dept_id, avg(salary) avgsal from s_emp group by dept_id) b
where a.dept_id=b.dept_id
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
select id, last_name, salary, manager_id
from s_emp a where salary>(select salary from s_emp 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 10 rows selected.
- 一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据
- java根据list中对象的属性找出list重复数据或去除list重复数据
- 在一个n个数的数组中(n很大),找出前i个中的最大或最少的数
- C# 关于从List或Collection中找出对象的某个属性值与另一个list相同的全部对象
- 从一亿个数中找出最大的一万个数或最小的一万个数
- 求两个整数的最大值或最小值,不可以用大于号和小于号
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
- 在datagrid里面怎么把一列的显示的内容改变和数据库里不一样?比如:数据库里存的是1和0,而datagrid里某一列显示出来是“完成”或“未完成”。如果在datagrid里面这一列输入“完成”,则在数据库里存的是1。
- 使用一个函数找出整型数组的最大值或最小值
- Leetcode421. 找出数组中两个元素异或的最大值
- AVPacket,是压缩数据的结构体(解码前或编码后的结构体)。
- mysql 插入数据是主键或唯一值重复的解决方法
- 给出一组整数型的数据,找出最大值,数据的个数是任意的
- 算法:php求几个数字之和刚好大于或等于某一个给定的值
- 英文面试
- myeclipse6.0.1+eclipse3.3.1+spring2.0+struts1.2+hibernate3.2配置详解
- sendMail
- 学习.net应该知道什么
- linux进制转换命令
- 一是关于怎样找出和去除重复数据,这在另一个帖子利已有详细介绍。二是关于找出某一列里最大或最小的前几个,或是大于或小于某一个值(最大值或平均值)的数据
- 窗体生命周期所响应的消息
- 同一时间同一帐号只能登陆一
- asp.net控件,
- GridView实现用“...”代替超长字符串
- 搬迁...
- vb For循环例子
- junit3测试spring下的service层
- asp.net 中repeater控件的使用