Oracle SQL查询练习(亲测可用)

合集下载

oracle sql练习题

oracle sql练习题

oracle sql练习题Oracle SQL练习题在数据库管理和开发中,SQL(Structured Query Language)是一种标准化的用于管理和操作关系数据库的语言。

对于想要提升自己的SQL技能的数据库开发人员和管理员来说,练习题是一个非常有效的学习方法。

本文将介绍一些Oracle SQL练习题,帮助读者巩固和提高他们的SQL技能。

1. 查询员工表中的所有员工信息。

```sqlSELECT * FROM employees;```2. 查询员工表中的所有员工的姓名和工资。

```sqlSELECT first_name, last_name, salary FROM employees;```3. 查询员工表中工资大于5000的员工信息。

```sqlSELECT * FROM employees WHERE salary > 5000;```4. 查询员工表中工资大于5000并且职务是经理的员工信息。

```sqlSELECT * FROM employees WHERE salary > 5000 AND job_id = 'MANAGER'; ```5. 查询员工表中按照工资降序排列的前5个员工信息。

```sqlSELECT * FROM employees ORDER BY salary DESC FETCH FIRST 5 ROWS ONLY; ```6. 查询员工表中每个职务的员工数量。

```sqlSELECT job_id, COUNT(*) FROM employees GROUP BY job_id;```7. 查询员工表中每个部门的平均工资。

```sqlSELECT department_id, AVG(salary) FROM employees GROUP BY department_id; ```8. 查询员工表中工资排名前10的员工信息。

oracle sql练习题

oracle sql练习题

oracle sql练习题1. 编写一个SQL查询,找出员工表中工资最高的员工的姓名和工资。

```SELECT ename, salFROM empWHERE sal = (SELECT MAX(sal) FROM emp);```2. 编写一个SQL查询,计算出每个部门的平均工资,并按照平均工资降序排列。

```SELECT deptno, AVG(sal) as avg_salaryFROM empGROUP BY deptnoORDER BY avg_salary DESC;```3. 编写一个SQL查询,找出没有任何员工的部门(即部门中没有员工记录的部门)。

```SELECT d.deptno, d.dnameFROM dept dLEFT JOIN emp e ON d.deptno = e.deptnoWHERE e.deptno IS NULL;```4. 编写一个SQL查询,找出在每个部门中薪资排名第二高的员工的姓名和工资。

```SELECT d.dname, e.ename, e.salFROM emp eINNER JOIN dept d ON e.deptno = d.deptnoWHERE e.sal = (SELECT DISTINCT salFROM empWHERE deptno = e.deptnoORDER BY sal DESCOFFSET 1 ROW FETCH FIRST 1 ROW ONLY);```5. 编写一个SQL查询,找出拥有部门管理权限(即至少管理一个部门)且工资不超过5000的员工的姓名。

```SELECT enameFROM empWHERE empno IN (SELECT DISTINCT mgrFROM empWHERE sal <= 5000);```6. 编写一个SQL查询,找出在工资表中有重复记录的员工姓名和工资。

```SELECT ename, salFROM empGROUP BY ename, salHAVING COUNT(*) > 1;```7. 编写一个SQL查询,找出至少在两个部门工作过的员工的姓名。

oracle查询练习

oracle查询练习
用SQL完成以下问题列表:
列出至少有一个员工的所有部门。
列出薪金比“SMITH”多的所有员工。
select * from emp where sal>(select sal from emp where ename='SMITH');
列出所有员工的姓名及其直接上级的姓名。
SELECT A.ENAME,B.ENAME FROM EMP A,EMP B WHERE A.MGR=B.EMPNO;
select distinct job from emp where deptno=20;
列出不属于SALES 的部门。
select * from dept where dname !='SALES';
显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。
SELECT ENAME,SAL FROM EMP WHERE SAL NOT BETWEEN 1000 AND 1500 ORDER BY SAL DESC;
HR表
1. 让SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5 输出结果的货币单位是¥和$。
2. 列出前五位每个员工的名字,工资、涨薪后的的工资(涨幅为8%),以“元”为单位进行四舍五入。
3. 找出谁是最高领导,将名字按大写形式显示。
select a.* ,b.dname from emp a right join dept b on(a.deptno=b.deptno);
列出所有“CLERK”(办事员)的姓名及其部门名称。

oracle的sql练习题

oracle的sql练习题

oracle的sql练习题1. 编写SQL查询语句,从员工表(EMPLOYEES)中选择工资(SALARY)大于5000的员工信息,按照工资的降序排列。

```sqlSELECT * FROM EMPLOYEES WHERE SALARY > 5000 ORDER BY SALARY DESC;```2. 编写SQL查询语句,从部门表(DEPARTMENTS)中选择部门名称(DEPARTMENT_NAME)、部门位置(LOCATION_ID)以及该部门员工的数量,按照员工数量的升序排列。

```sqlSELECT DEPARTMENT_NAME, LOCATION_ID, COUNT(*) AS EMPLOYEE_COUNTFROM DEPARTMENTSJOIN EMPLOYEES ON DEPARTMENTS.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_IDGROUP BY DEPARTMENT_NAME, LOCATION_IDORDER BY EMPLOYEE_COUNT ASC;```3. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"E"开头的员工信息。

```sqlSELECT FIRST_NAME, DEPARTMENT_NAMEFROM EMPLOYEESJOIN DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_IDWHERE DEPARTMENT_NAME LIKE 'E%';```4. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"A"结尾的员工信息,且员工的工资(SALARY)在3000到6000之间。

oracle sql 试题及答案

oracle sql 试题及答案

oracle sql 试题及答案在Oracle数据库管理和开发中,SQL(Structured Query Language)是一种标准化的关系型数据库语言。

在这篇文章中,我们将提供一些Oracle SQL试题及其答案,旨在帮助读者巩固和加深对Oracle SQL语言的理解。

请注意,答案中不再重复题目,仅给出相应的解答。

1. 以下SQL语句中,哪一个用于创建一个名为"Employees"的表?CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,LastName VARCHAR2(50),FirstName VARCHAR2(50),DateOfBirth DATE);2. 在一个名为"Employees"的表中,你想要删除LastName为"Smith"的所有行。

你应该使用以下哪个SQL语句?DELETE FROM Employees WHERE LastName = 'Smith';3. 假设你有一个名为"Employees"的表,你想要增加一个名为"Salary"的列,数据类型为NUMBER(10,2)。

你应该使用以下哪个SQL 语句?ALTER TABLE Employees ADD (Salary NUMBER(10,2));4. 以下SQL查询语句将返回哪些列?SELECT LastName, FirstName FROM Employees;答案:该查询将返回"Employees"表中的LastName和FirstName列。

5. 以下SQL语句将返回"Employees"表中有多少条记录?SELECT COUNT(*) FROM Employees;答案:该查询将返回"Employees"表中的记录数。

oracle sql题

oracle sql题

Oracle SQL题1. 什么是Oracle SQLOracle SQL是一种用于与Oracle数据库进行交互的编程语言。

它是一种结构化查询语言(Structured Query Language),用于管理和操作关系型数据库中的数据。

Oracle SQL提供了丰富的功能和语法,可以执行各种数据库操作,如查询、插入、更新和删除数据,以及创建和管理数据库对象等。

2. Oracle SQL的基本语法2.1 查询数据在Oracle SQL中,可以使用SELECT语句来查询数据。

以下是一个简单的SELECT语句的示例:SELECT column1, column2, ...FROM table_nameWHERE condition;•column1, column2, …:要查询的列名•table_name:要查询的表名•condition:查询条件例如,要查询一个名为”employees”的表中所有员工的姓名和薪水,可以使用以下SELECT语句:SELECT name, salaryFROM employees;2.2 插入数据要向Oracle数据库中的表中插入数据,可以使用INSERT语句。

以下是一个简单的INSERT语句的示例:INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);•table_name:要插入数据的表名•column1, column2, …:要插入数据的列名•value1, value2, …:要插入的数据值例如,要向一个名为”employees”的表中插入一条新的员工记录,可以使用以下INSERT语句:INSERT INTO employees (name, salary)VALUES ('John Doe', 5000);2.3 更新数据要更新Oracle数据库中的数据,可以使用UPDATE语句。

Oracle的sql语句练习题含答案

Oracle的sql语句练习题含答案

--1、选择部门30中的雇员select * from emp where deptno=30;--2、列出所有办事员的姓名、编号和部门select ename,empno,dname from emp e inner join dept d on = where job=upper('clerk’);--3、找出佣金高于薪金的雇员select * from emp where comm>sal;--4、找出佣金高于薪金60%的雇员select * from emp where comm>sal*^--5、找出部门10中所有经理和部门20中的所有办事员的详细资料select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk '));--6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')) or (job<>upper(‘manager’) and job<>upper(‘clerk’) and sal>=2000)--7、找出收取佣金的雇员的不同工作select distinct job from emp where comm>0;--8、找出不收取佣金或收取的佣金低于100的雇员select * from emp where nvl(comm,0)<100;|--9、找出各月最后一天受雇的所有雇员select * from emp where hiredate= last_day(hiredate);--10、找出早于25年之前受雇的雇员select * from emp where months_between(sysdate,hiredate)/12>25;select * from emp where hiredate<add_months(sysdate,-12*25);--11、显示只有首字母大写的所有雇员的姓名select ename from emp where ename=initcap(ename);--12、显示正好为6个字符的雇员姓名"select ename from emp where length(ename)=6--13、显示不带有'R'的雇员姓名Select ename from emp where ename not like ‘%R%’;Select ename from emp where instr(ename,’R’)=0;--14、显示所有雇员的姓名的前三个字符select substr(ename,1,3) from emp--15、显示所有雇员的姓名,用a替换所有'A'Select replace(ename,’A’,’a’) from emp"--16、显示所有雇员的姓名以及满10年服务年限的日期Select ename,add_months(hiredate,12*10) ‘服务年限的日期’ from emp--17、显示雇员的详细资料,按姓名排序Select * from emp order by ename--18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面Select ename from emp order by hiredate--19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序Select ename,job,sal from emp order by job desc ,sal asc!--20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面select ename,to_char(hiredate,'yyyy'),to_char(hiredate,'mm') from emp order by hiredate asc--21、显示在一个月为30天的情况下所有雇员的日薪金select ename,sal/30 from emp;--22、找出在(任何年份的)2月受聘的所有雇员select * from emp where to_char(hiredate,'mm')='02';--23、对于每个雇员,显示其加入公司的天数select ename,sysdate-hiredate from emp'--24、显示姓名字段的任何位置,包含 "A" 的所有雇员的姓名select ename from emp where ename like '%A%';select ename from emp where instr(ename,’A’,1)>0;--25、以年、月和日显示所有雇员的服务年限Select months_between(sysdate,hiredate)/12 as “年”, months_between(sysdate,hiredate) as “月”, sysdate-hiredate as “日” from emp --1、列出至少有一个雇员的所有部门select distinct dname from dept where deptno in (select distinct deptno from emp);--2、列出薪金比"SMITH"多的所有雇员、select ename,sal from emp where sal>(select sal from emp where ename=upper('smith'));--3、列出所有雇员的姓名及其直接上级的姓名select , from emp e,emp m where =(+);--4、列出入职日期早于其直接上级的所有雇员select ename from emp e where hiredate<(select hiredate from emp where empno=;--5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from dept d left join emp e on =;--6、列出所有“CLERK”(办事员)的姓名及其部门名称%select ename,dname from emp e left join dept d on = where job=upper('clerk');--7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录select job,min(sal) from emp group by job having min(sal)>1500;--8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp where deptno = (select deptno from dept wheredname=uppder('SALES'))--9、列出薪金高于公司平均水平的所有雇员select ename from emp where sal>(select avg(sal) from emp);--10、列出与“SCOTT”从事相同工作的所有雇员@select ename from emp where job=(select job from emp where ename=upper('scott'));--11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金select ename,sal from emp where sal in (select sal from emp where deptno=30);--12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);--13、列出每个部门的信息以及该部门中雇员的数量select ,dname,count(ename) from dept d left join emp e on =group by ,dname*--14、列出所有雇员的雇员名称、部门名称和薪金Select ,, from emp e left join dept d on =--15、列出从事同一种工作但属于不同部门的雇员的不同组合Select ,,,,,From emp tba,emp tbbWhere = and <>--16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员Select ,dname,loc,count(empno)<From dept,empWhere =(+)Group by ,dname,loc--17、列出各种类别工作的最低工资Select min(sal) from emp group by job--18、列出各个部门的MANAGER(经理)的最低薪金Select deptno,min(sal) from emp where job=upper(‘manager’) group by deptno --19、列出按年薪排序的所有雇员的年薪select (sal+nvl(comm,0))*12 as avn from emp order by avn--20、列出薪金水平处于第四位的雇员Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4。

sql 查询 练习题

sql 查询 练习题

sql 查询练习题SQL查询练习题SQL是一种用于管理和操作关系型数据库的语言,它可以让我们轻松地从数据库中提取所需的数据。

在实际应用中,熟练掌握SQL查询语句的编写是非常重要的。

为了帮助大家提高SQL查询的能力,下面将给出一些SQL查询练习题。

1. 查询所有员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询所有部门的名称和员工数量。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称; ```3. 查询所有工资高于平均工资的员工信息。

```sqlSELECT * FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表);```4. 查询每个部门工资最高的员工信息。

```sqlSELECT * FROM 员工表 WHERE (部门名称, 工资) IN (SELECT 部门名称, MAX(工资) FROM 员工表 GROUP BY 部门名称);```5. 查询没有分配部门的员工信息。

```sqlSELECT * FROM 员工表 WHERE 部门名称 IS NULL;```6. 查询每个部门的平均工资,并按照平均工资降序排列。

```sqlSELECT 部门名称, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门名称ORDER BY 平均工资 DESC;```7. 查询每个部门的员工数量,并按照员工数量升序排列。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称ORDER BY 员工数量 ASC;```8. 查询员工表中工资排名前10的员工信息。

```sqlSELECT * FROM 员工表 ORDER BY 工资 DESC LIMIT 10;```9. 查询每个部门的员工工资排名前3的员工信息。

sql测试题和答案.docx

sql测试题和答案.docx

sql测试题和答案# SQL测试题1. 基础查询题- 题目:编写一个SQL查询,从`employees`表中选择所有员工的姓名和员工ID。

- 答案:`SELECT name, employee_id FROM employees;`2. 条件查询题- 题目:从`orders`表中选择所有订单金额超过1000的订单。

- 答案:`SELECT * FROM orders WHERE order_amount > 1000;`3. 排序题- 题目:从`products`表中选择所有产品的名称和价格,并按价格降序排列。

- 答案:`SELECT name, price FROM products ORDER BY price DESC;`4. 聚合函数题- 题目:计算`sales`表中所有销售额的总和。

- 答案:`SELECT SUM(sales_amount) AS total_sales FROM sales;`5. 分组查询题- 题目:从`sales`表中按产品ID分组,并计算每个产品的总销售额。

- 答案:`SELECT product_id, SUM(sales_amount) AStotal_sales_per_product FROM sales GROUP BY product_id;`6. 连接查询题- 题目:查询`customers`表和`orders`表,找出所有客户的姓名和他们下过的订单数量。

- 答案:`SELECT , COUNT(o.order_id) AS order_count FROM customers c JOIN orders o ON c.customer_id =o.customer_id GROUP BY ;`7. 子查询题- 题目:找出`employees`表中工资高于平均工资的员工的姓名和工资。

- 答案:`SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);`8. 多表连接查询题- 题目:查询`employees`表和`departments`表,找出所有员工的姓名、部门名称和部门ID。

Oracle的sql语句练习题含答案(二).

Oracle的sql语句练习题含答案(二).

1、列出至少有一个雇员的所有部门select distinct dname from dept where deptno in (select distinct deptno from emp;2、列出薪金比"SMITH"多的所有雇员select ename,sal from emp where sal>(select sal from emp where ename=upper('smith';3、列出所有雇员的姓名及其直接上级的姓名select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+;4、列出入职日期早于其直接上级的所有雇员select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr;5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from dept d left join emp e on d.deptno=e.deptno;6、列出所有“CLERK”(办事员)的姓名及其部门名称select ename,dname from emp e left join dept d on e.deptno=d.deptno where job=upper('clerk';7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录select job,min(sal from emp group by job having min(sal>1500;8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp where deptno = (select deptno from dept where dname=uppder('SALES'9、列出薪金高于公司平均水平的所有雇员select ename from emp where sal>(select avg(sal from emp; 10、列出与“SCOTT”从事相同工作的所有雇员select ename from emp where job=(select job from emp where ename=upper('scott'; 11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金select ename,sal from emp where sal in (select sal from emp where deptno=30; 12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金select ename ,sal from emp where sal>(select max(sal from emp where deptno=30; 13、列出每个部门的信息以及该部门中雇员的数量select d.deptno,dname,count(ename from dept d left join emp e on (d.deptno=e.deptno group by d.deptno,dname 14、列出所有雇员的雇员名称、部门名称和薪金Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno 15、列出从事同一种工作但属于不同部门的雇员的不同组合Selecttba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptno From emp tba,emp tbb Where tba.job=tbb.job and tba.deptno<>tbb.deptno 16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员Selectdept.deptno,dname,loc,count(empno From dept,emp Wheredept.deptno=emp.deptno(+ Group by dept.deptno,dname,loc 17、列出各种类别工作的最低工资Select min(sal from emp group by job 18、列出各个部门的MANAGER(经理)的最低薪金Select deptno,min(sal from emp where job=upper(‘manager’ group by deptno 19、列出按年薪排序的所有雇员的年薪select (sal+nvl(comm,0*12 as avn from emp order by avn 20、列出薪金水平处于第四位的雇员Select * from (Select ename,sal, rank( over (order by sal desc as grade from emp where grade=4。

oracle查询练习

oracle查询练习

1.从表EMP中查询所有姓名长度大于8的员工信息:
2. 从表EMP中检索ENAME和JOB,使用Concat将这两列连接在一起:
3. 从表EMP中检索ENAME字段第3个字符:
4. 从表EMP中检索ENAME字段中包含’th’的记录:
5. 将ENAME字段中包含的’TH’替换为’AA’:
6. 获取当期时间:
7. 获取今天之前10天的日期:
8. 获取本年第一天的日期:
9. 将当期日期显示为2008-04-03:
10. 将当期日期显示为2008年-04月-03日的格式:
11. 将当期日期显示为2008-04-03并带有时间,时间要求为24小时制:
12. 获取本月完整的月份名(9字符)-所有字符大写:
13. 获取本周是本年中的第几周:
14. 将表EMP中HIREDA TE显示为yyyy-mm-dd个格式:
15. 从表EMP中检索COMM字段,将NULL替换为0:。

oracle数据库sql题目

oracle数据库sql题目

oracle数据库sql题目Oracle数据库是一种关系型数据库管理系统(RDBMS),在企业中被广泛应用于数据存储和管理。

在这篇文章中,我们将介绍一些常见的Oracle数据库SQL 题目,帮助你更好地理解和应用SQL语言。

1. 查询所有表名在Oracle数据库中,我们可以使用以下SQL语句查询所有表名:```SELECT table_nameFROM all_tables;```该语句会返回当前用户下所有表的名称。

你还可以使用`user_tables`或`dba_tables`视图来查看不同用户或所有用户下的表名。

2. 查询表结构可以使用以下SQL语句查询表的结构,包括字段名和数据类型:```DESCRIBE table_name;```该语句将返回指定表的属性信息,如字段名、数据类型、长度等。

3. 查询表中的数据可以使用SELECT语句查询表中的数据,例如:SELECT * FROM table_name;```该语句将返回指定表中的所有数据。

你还可以使用WHERE子句添加条件来过滤结果:```SELECT * FROM table_name WHERE condition;```其中,`table_name`是要查询的表名,`condition`是查询条件。

4. 执行聚合函数Oracle数据库提供了多种聚合函数,可以计算一组数据的总和、平均值、最大值、最小值等。

例如:```SELECT COUNT(*) FROM table_name;```该语句将返回指定表中的记录数。

你还可以使用其他聚合函数如SUM、AVG、MAX、MIN等,来计算相应的值。

5. 插入数据使用INSERT语句可以向表中插入新的数据,例如:```INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);其中,`table_name`是要插入数据的表名,`column1, column2, ...`是要插入的列名,`value1, value2, ...`是要插入的值。

Oracle SQL 练习题及答案

Oracle SQL 练习题及答案
41、检索至少选修两门课程的学生学号
42、查询全部学生都选修的课程的课程号和课程名
43、查询没学过“谌燕”老师讲授的任一门课程的学生姓名
44、查询两门以上不及格课程的同学的学号及其平均成绩
45、检索“c004”课程分数小于60,按分数降序排列的同学学号
46、删除“s002”同学的“c001”课程的成绩
10、查询没有学全所有课的同学的学号、姓名;
11、查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名;
12、查询至少学过学号为“s001”同学所有一门课的其他同学学号和姓名;
13、把“SC”表中“谌燕”老师教的课的成绩都更改为此课程的平均成绩;
14、查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名;
insert into student values ('s004','琴沁',20,'女');
insert into student values ('s005','王丽',20,'女');
insert into student values ('s006','李波',21,'男');
insert into student values ('s007','刘玉',21,'男');
15、删除学习“谌燕”老师课的SC 表记录;
16、向SC 表中插入一些记录,这些记录要求符合以下条件:没有上过编号“c002”课程的同学学号、“c002”号课的平均成绩;
17、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

oracle sql题

oracle sql题

oracle sql题一、题目要求本题目旨在考察对OracleSQL语言的理解和运用能力。

请根据题目要求,完成相应的SQL查询。

二、题目描述请根据以下描述,完成SQL查询:该数据库包含一个名为Employees的表,包含以下列:EmployeeID(员工ID)、Name(姓名)、Department(部门)和Salary(薪资)。

要求完成以下查询:1.按照薪资从高到低排序。

2.只考虑薪资大于等于5000的员工。

3.排除部门为“Sales”的员工。

4.查询结果包括姓名和部门信息。

三、SQL查询语句根据题目要求,以下为对应的SQL查询语句:```sqlSELECTName,DepartmentFROMEmployeesWHERESalary>=5000ANDDepartment<>'Sales'ORDERBYSalaryDESC;```四、答案解析该SQL查询语句通过条件筛选Salary大于等于5000的员工,并且排除部门为“Sales”的员工,最后按照薪资从高到低进行排序,最终返回姓名和部门信息。

五、注意事项1.请确保SQL语句语法正确,符合OracleSQL语言规范。

2.请注意数据表中的真实数据类型和约束条件,避免出现错误。

3.请根据实际情况进行测试,确保查询结果的准确性。

六、额外提示如果需要进一步优化SQL查询,可以考虑使用索引来提高查询性能。

对于Salary列,可以创建索引以提高大于等于5000的筛选速度。

同时,对于Department列,也可以考虑创建索引以优化排除“Sales”部门的性能。

七、参考代码(可选)以下是一个可能的参考代码实现,供参考:```sql--创建Salary索引CREATEINDEXidx_salaryONEmployees(Salary);--执行SQL查询SELECTName,DepartmentFROMEmployeesWHERESalary>=5000ANDDepartment<>'Sales'ORDERBYSalaryDESC;```请注意,这只是参考代码,实际使用时需要根据数据库结构和数据量进行适当的调整。

oracle数据库sql题目

oracle数据库sql题目

一、概述Oracle数据库是全球领先的企业级关系数据库管理系统,它具有可靠、高性能、安全的特点,被广泛应用于各种企业级应用系统中。

在Oracle数据库中,SQL作为数据操作语言,扮演着重要的角色,通过SQL语句可以进行数据的增删改查操作。

本文将针对Oracle数据库中的一些SQL题目进行讨论和解答,以帮助读者更好地理解和掌握Oracle数据库的SQL语言。

二、SQL题目1. 查询员工表中所有员工的信息,包括员工号、尊称、工资、部门号以及部门名称。

2. 统计每个部门的员工人数,并按照部门人数的多少进行排序。

3. 查询员工表中工资排名前10的员工的信息。

4. 查询每个部门工资最高的员工信息。

5. 查询员工表中工资处于工资中位数附近的员工信息。

6. 统计每个部门的平均工资,并按照平均工资的高低进行排序。

7. 查询在员工表中有相同工资水平的员工信息。

8. 查询员工表中入职日期在2019年的员工信息。

9. 统计每个部门的员工的平均入职年限,并按照平均入职年限进行排序。

10. 查询员工表中在同一部门工作年限超过10年的员工信息。

三、解答1. 查询员工表中所有员工的信息,包括员工号、尊称、工资、部门号以及部门名称。

```SELECT e.employee_id, e.employee_name, e.salary,e.department_id, d.department_nameFROM employee eJOIN department d ON e.department_id = d.department_id; ```2. 统计每个部门的员工人数,并按照部门人数的多少进行排序。

```SELECT department_id, COUNT(employee_id) ASemployee_countFROM employeeGROUP BY department_idORDER BY employee_count DESC;```3. 查询员工表中工资排名前10的员工的信息。

oracle练习-SQL

oracle练习-SQL

oracle练习-SQL使用scott用户,密码为tiger登录数据库orcl,数据库中有一个表,表名为emp,具体信息如下:emp职工表;表中有如下列:empno(职工编号)、ename(职工姓名)、job(岗位)、MGR(主管的职工编号)、hiredate(入职日期)、sal(薪水)、comm(津贴)、deptno(部门编号)练习一:1.查询emp(雇员)整个表内容;select * from emp;2.只查询emp表中的job和deptno两列信息;select job,deptno from emp;3.查询emp表中数据,并给列取中文别名;select job "工作" ,deptno "部门编号" from emp;4.将姓名和薪水两列连接起来显示“xxx的薪水是多少”这样的信息;select ename||'薪水是'||sal from emp;5.查询岗位为"CLERK"的职工信息;select * from emp where job='CLERK';6.查询部门编号不是10的职工信息;select * from emp where deptno!='10';7.查询comm为空值的职工信息;select * from emp where comm is null;8.查询职工姓名中带有A的职工信息;select * from emp where ename like '%A%';9.查询职工姓名中倒数第二个字符为E的职工信息;select * from emp where ename like '%E_';10.查询职工姓名中带有L和E的职工信息,并且姓名中L在前,E在后;要求:只查询出职工编号,职工姓名,薪水和部门编号这四列,并且给部门编号列取中文别名;(扩展练习)select empno"职工编号",ename"职工姓名",sal"薪水",deptno"部门编号" from emp;11.查询职工姓名中带有L和E的职工信息,并且姓名中L在前,E在后,且要求姓名第三位是L;select * from emp where ename like '__LE%'练习2:1.查询部门编号为30,MGR主管编号为7698的员工信息;select * from emp where deptno='30' and mgr='7698';2.查询部门编号为10,或者job为CLERK的员工信息select * from emp where deptno='10' or job='CLERK';3.查询sal大于等于900,小于3000,并且部门编号为10、20的职工信息;select * from emp where sal>=900 and sal<3000 or deptno='10'and deptno=20';4.查询mgr主管编号不是7698和7788,或者job岗位为CLERK 的职工信息,查询结果并且先按sal薪水降序排列,再按empno职工编号升序排列(扩展练习)select * from emp where not(mgr='7698' or mgr='7798') or job='CLERK' order by sal desc,empno asc;5.将下面SQL分别执行,能得出什么结论?(扩展练习)select * from emp where deptno='30' and mgr='7698' or job='CLERK';select * from emp where job='CLERK' or deptno='30' and mgr='7698';select * from emp where deptno='30' or mgr='7698' and job='CLERK';练习3:1.往emp表里插入一条雇员信息,雇员编号为4位,第一位为按组号取,其他三位组内讨论决定,hiredate取当前系统值,DEPTNO 部门编号取值为10、20、30当中的一个,其他字段自行决定;不提交2.将deptno取值为10的职工薪水翻倍,并且ename在原来取值的基础上拼接上TEST;不提交,设置一个保存点,保存点名字以自己的名字命名3.删除刚刚插入的的职工信息;不提交4.回滚到保存点;5.提交,最后数据会变成什么样?练习4:两个表定义如下:(如果已经有该表,则将该表删除掉再重新创建)---省份表,省份id和省份名称;create table province(pro_id varchar2(10),pro_name varchar2(30),primary key(pro_id));--公民信息表,身份证id,姓名,年龄,城市,性别,手机号,学历。

Oracle查询练习

Oracle查询练习

Oracle查询练习 ⾮常经典的⼀些⽇常醒脑练习内容!! 如有更⾼效的写法欢迎赐教! 1 1.已知Oracle的Scott⽤户中提供了三个测试数据库表,名称分别为dept,emp和salgrade。

使⽤SQL语⾔完成以下操作2 1)试⽤SQL语⾔完成下列查询(单表查询):3 a)查询20号部门的所有员⼯信息:4 select * from emp e where e.deptno=20;5 b)查询奖⾦(COMM)⾼于⼯资(SAL)的员⼯信息:6 select * from emp where comm>sal;7 c)查询奖⾦⾼于⼯资的20%的员⼯信息:8 select * from emp where comm>sal*0.2;9 d)查询10号部门中⼯种为MANAGER和20号部门中⼯种为CLERK的员⼯的信息:10 select * from emp e11 where (e.deptno=10 and e.job='MANAGER')12 or (e.deptno=20 and e.job='CLERK') ;13 e)查询所有⼯种不是MANAGER和CLERK,且⼯资⼤于或等于2000的员⼯的详细信息:14 select * from emp15 where job not in('MANAGER','CLERK') and sal>=2000;16 f)查询没有奖⾦或奖⾦低于100的员⼯信息:17 select * from emp where comm is null or comm<100;18 g)查询员⼯⼯龄⼤于或等于10年的员⼯信息:19 select * from emp where (sysdate-hiredate)/365>=10;20 h)查询员⼯信息,要求以⾸字母⼤写的⽅式显⽰所有员⼯的姓名:21 第⼀种写法:22 select initcap(ename) from emp;2324 第⼆种写法:25 select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;26 i)查询在2⽉份⼊职的所有员⼯信息:27 select * from emp where to_char(hiredate,'MM')='02';28 j)显⽰所有员⼯的姓名、⼊职的年份和⽉份,按⼊职⽇期所在的⽉份排序,若⽉份相同则按⼊职的年份排序:29 select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'MM')30 month31 from emp32 order by month,year;33 k)查询'JONES'员⼯及所有其直接、间接下属员⼯的信息:34 select e.* from emp e35 start with ename='JONES'36 connect by prior empno=mgr;37 l)查询SCOTT员⼯及其直接、间接上级员⼯的信息:38 select e.* from emp e39 start with ename='SCOTT'40 connect by prior mgr=empno;41 2)试⽤SQL语⾔完成下列查询(多表查询):42 a)查询从事同⼀种⼯作但不属于同⼀部门的员⼯信息:43 select a.ename,a.job,a.deptno,b.ename,b.job,b.deptno44 from emp a,emp b45 where a.job=b.job and a.deptno<>b.deptno;46 b)查询各个部门的详细信息以及部门⼈数、部门平均⼯资:47 select d.deptno,count(e.empno),avg(e.sal),d.dname,d.loc48 from emp e ,dept d49 where e.deptno=d.deptno50 group by d.deptno,d.dname,d.loc;51 3)试⽤SQL语⾔完成下列查询(嵌套⼦查询):52 a)查询10号部门员⼯以及领导的信息:53 select * from emp where empno in(54 select mgr from emp where deptno=10) or deptno=10;55 b)查询⼯资为某个部门平均⼯资的员⼯信息:56 select * from emp57 where sal in(select avg(sal) from emp group by deptno);58 c)查询⼯资⾼于本部门平均⼯资的员⼯的信息:59 select * from emp e160 where sal >(select avg(sal) from emp e2 where e2.deptno=e1.deptno);61 d)查询⼯资⾼于本部门平均⼯资的员⼯的信息及其部门的平均⼯资:62 select e.*,a.avgsal63 from emp e,64 (select deptno,avg(sal) as avgsal from emp group by deptno) a where a.deptno=e.deptno and e.sal>a.avgsal;65 4)试⽤SQL语⾔完成下列查询(聚合函数):66 a)统计各个⼯种的⼈数与平均⼯资:67 select count(*),e.job,avg(e.sal) from emp e68 group by e.job;69 b)统计每个部门中各个⼯种的⼈数与平均⼯资:70 select deptno,job,count(empno),avg(sal) from emp e71 group by e.deptno,e.job;72 c)查询所有员⼯⼊职以来的⼯作期限,⽤“**年**⽉**⽇”的形式表⽰。

Oracle的sql语句练习题含答案(二)

Oracle的sql语句练习题含答案(二)

Oracle的sql语句练习题含答案(二)1、列出至少有一个雇员的所有部门select distinct dname from dept where deptno in (select distinct deptno from emp);2、列出薪金比"SMITH"多的所有雇员select ename,sal from emp where sal>(select sal from emp where ename=upper('smith'));3、列出所有雇员的姓名及其直接上级的姓名select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+);4、列出入职日期早于其直接上级的所有雇员select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr);5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from dept d left join emp e on d.deptno=e.deptno;6、列出所有“CLERK”(办事员)的姓名及其部门名称select ename,dname from emp e left join dept d one.deptno=d.deptno where job=upper('clerk');7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录select job,min(sal) from emp group by job having min(sal)>1500;8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp where deptno = (select deptno from dept where dname=uppder('SALES'))9、列出薪金高于公司平均水平的所有雇员select ename from emp where sal>(select avg(sal) from emp);10、列出与“SCOTT”从事相同工作的所有雇员select ename from emp where job=(select job from emp where ename=upper('scott'));11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金select ename,sal from emp where sal in (select sal from emp where deptno=30);12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);13、列出每个部门的信息以及该部门中雇员的数量select d.deptno,dname,count(ename) from dept d left join emp e on (d.deptno=e.deptno)group by d.deptno,dname14、列出所有雇员的雇员名称、部门名称和薪金Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno)15、列出从事同一种工作但属于不同部门的雇员的不同组合Selecttba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptnoFrom emp tba,emp tbbWhere tba.job=tbb.job and tba.deptno<>tbb.deptno16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员Select dept.deptno,dname,loc,count(empno)From dept,empWhere dept.deptno=emp.deptno(+)Group by dept.deptno,dname,loc17、列出各种类别工作的最低工资Select min(sal) from emp group by job18、列出各个部门的MANAGER(经理)的最低薪金Select deptno,min(sal) from emp where job=upper(‘manager’) group by deptno19、列出按年薪排序的所有雇员的年薪select (sal+nvl(comm,0))*12 as avn from emp order by avn20、列出薪金水平处于第四位的雇员Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4。

oracle查询练习题

oracle查询练习题

oracle查询练习题Oracle查询练习题数据库技术在现代信息管理中扮演着至关重要的角色。

Oracle作为一种流行的关系型数据库管理系统,被广泛应用于企业级应用程序和数据仓库。

为了更好地掌握Oracle查询语言,下面将提供一些查询练习题,帮助读者巩固和提高自己的查询技能。

查询练习题一:学生信息假设我们有一个学生信息表,其中包含以下字段:学生ID、姓名、性别、年龄、所在班级。

请编写SQL查询语句,找出年龄大于等于18岁的男生的姓名和所在班级。

解答:```sqlSELECT 姓名, 所在班级FROM 学生信息WHERE 年龄 >= 18 AND 性别 = '男';```查询练习题二:订单信息假设我们有一个订单信息表,其中包含以下字段:订单ID、客户ID、订单日期、订单金额。

请编写SQL查询语句,找出每个客户的订单总金额,并按照订单金额的降序排列。

解答:```sqlSELECT 客户ID, SUM(订单金额) AS 订单总金额FROM 订单信息GROUP BY 客户IDORDER BY 订单总金额 DESC;```查询练习题三:产品销售假设我们有一个产品销售表,其中包含以下字段:销售ID、产品ID、销售日期、销售数量、销售金额。

请编写SQL查询语句,找出每个产品的总销售数量和总销售金额,并按照产品ID的升序排列。

解答:```sqlSELECT 产品ID, SUM(销售数量) AS 总销售数量, SUM(销售金额) AS 总销售金额FROM 产品销售GROUP BY 产品IDORDER BY 产品ID ASC;```查询练习题四:员工薪资假设我们有一个员工薪资表,其中包含以下字段:员工ID、姓名、部门、薪资。

请编写SQL查询语句,找出每个部门的平均薪资,并按照部门的字母顺序排列。

解答:```sqlSELECT 部门, AVG(薪资) AS 平均薪资FROM 员工薪资GROUP BY 部门ORDER BY 部门 ASC;```通过以上查询练习题,读者可以加深对Oracle查询语言的理解和应用。

Oracle+SQL:经典查询练手四篇

Oracle+SQL:经典查询练手四篇

Oracle SQL:经典查询练手四篇经典查询练手第一篇本文使用的实例表结构与表的数据如下:scott.emp员工表结构如下:Name Type Nullable Default Comments-------- ------------ -------- ------- --------EMPNO NUMBER(4) 员工号ENAME VARCHAR2(10) Y 员工姓名JOB VARCHAR2(9) Y 工作MGR NUMBER(4) Y 上级编号HIREDATE DATE Y 雇佣日期SAL NUMBER(7,2) Y 薪金COMM NUMBER(7,2) Y 佣金DEPTNO NUMBER(2) Y 部门编号scott.dept部门表Name Type Nullable Default Comments------ ------------ -------- ------- --------DEPTNO NUMBER(2) 部门编号DNAME VARCHAR2(14) Y 部门名称LOC VARCHAR2(13) Y 地点提示:工资=薪金+佣金scott.emp表的现有数据如下:SQL>select*from emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPT NO----- ---------- --------- ----- ----------- --------- --------- ------7369 SMITH CLERK 79021980-12-17800.002 07499 ALLEN SALESMAN 76981981-2-201600.00300.00307521 WARD SALESMAN 76981981-2-221250.00500.00307566 JONES MANAGER 78391981-4-22975.0027654 MARTIN SALESMAN 76981981-9-281250.001400.00307698 BLAKE MANAGER 78391981-5-12850.003 07782 CLARK MANAGER 78391981-6-92450.001 07788 SCOTT ANALYST 75661987-4-194000.002 07839 KING PRESIDENT 1981-11-175000.001 07844 TURNER SALESMAN 76981981-9-81500.000.003 07876 ADAMS CLERK 77881987-5-231100.002 07900 JAMES CLERK 76981981-12-3950.003 07902 FORD ANALYST 75661981-12-33000.002 07934 MILLER CLERK 77821982-1-231300.001 0102 EricHu Developer 14552011-5-2615500.0014.0010104 huyong PM 14552011-5-2615500.0014.0010105 WANGJING Developer 14552011-5-2615500.0014.001017 rows selectedScott.dept表的现有数据如下:SQL>select*from dept;DEPTNO DNAME LOC------ -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON50 50abc 50def60 Developer HaiKou6 rows selected用SQL完成以下问题列表:1.列出至少有一个员工的所有部门。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
)
--SC(S#,C#,score) 成绩表
DROP TABLE Student.SC
CREATE TABLE Student.SC
(
S# VARCHAR2(4) REFERENCES Student(S#),
C# VARCHAR2(3) REFERENCES Course(C#),
FROM Student a
WHERE 60>ALL
(
SELECT b.score
FROM SC b
WHERE a.S#=b.S#
)
SELECT S#,SNAME
FROM STUDENT
WHERE S# NOT IN (SELECT STUDENT.S#
FROM STUDENT,SC
)
--8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
SELECT a.S#,c.Sname
FROM (SELECT S#,score FROM SC WHERE c#='001') a,(SELECT S#,score FROM SC WHERE c#='002') b,Student c
INSERT INTO SC VALUES('1002','003',46);
INSERT INTO SC VALUES('1002','004',57);
INSERT INTO SC VALUES('1003','001',78);
INSERT INTO SC VALUES('1003','002',79);
FROM SC
GROUP BY S#
HAVING AVG(score)>60
--3、查询所有同学的学号、姓名、选课数、总成绩;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student
left Outer join SC on Student.S#=SC.S#
SELECT S#,Sname
FROM Student
WHERE S# NOT IN
(
SELECT c.S#
FROM Teacher a
LEFT OUTER JOIN Course b ON a.T#=b.T#
LEFT OUTER JOIN SC c ON b.C#=c.C#
group by Student.S#,Sname
--上下性能比较 0.031<0.047
SELECT b.S#,b.Sname,NVL(a.a1,0),NVL(a.a2,0)
FROM
(
SELECT S#,COUNT(1) AS a1,SUM(score) AS a2
FROM SC
--最好放在Oracle的界面化工具PL/SQL Developer里面查看比较好看和测试
--匿名运行块(若表存在则删除该表的)
DECLARE
numcount NUMBER;
BEGIN
SELECT COUNT(1) INTO numcount FROM user_tables WHERE table_name='STUDENT';
WHERE t.Tname='叶平'
GROUP BY a.S#,a.Sname
HAVING COUNT(1)=
(
SELECT COUNT(1)
FROM Teacher e
INNER JOIN Course f ON e.T#=f.T#
WHERE e.tname='叶平'
WHERE a.S#=b.S# AND a.S#=c.S# AND a.score>b.score
SELECT S#, SNAME
FROM (SELECT STUDENT.S#,
STUDENT.SNAME,
SCORE,
(SELECT SCORE
--7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
SELECT a.S#,a.Sname
FROM Student a
INNER JOIN SC b ON a.S#=b.S#
INNER JOIN Course c ON b.C#=c.C#
INNER JOIN Teacher d ON c.T#=d.T#
)
--Course(C#,Cname,T#) 课程表
CREATE TABLE Student.Course
(
C# VARCHAR2(3) PRIMARY KEY,
Cname VARCHAR2(20),
T# VARCHAR2(4) REFERENCES Teacher(T#)
INSERT INTO SC VALUES('1003','003',84);
INSERT INTO SC VALUES('1003','004',46);
INSERT INTO SC VALUES('1004','001',57);
INSERT INTO SC VALUES('1004','002',56);
FROM SC SC_2
WHERE SC_2.S# = STUDENT.S#
AND SC_2.C# = '002'
) SCORE2
FROM STUDENT, SC
INSERT INTO Student VALUES('1004','赵六',18,'女');
INSERT INTO Student VALUES('1005','刘七',18,'女');
INSERT INTO Teacher VALUES('2001','叶平');
INSERT INTO Teacher VALUES('2002','赵敏');
) a
LEFT OUTER JOIN Student b ON a.S#=b.S#
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# and SC.C#='001'
and exists( Select * from SC SC_2 WHERE SC_2.C#='002');
INSERT INTO SC VALUES('1001','003',80.5);
INSERT INTO SC VALUES('1001','004',80.5);
INSERT INTO SC VALUES('1002','001',74);
INSERT INTO SC VALUES('1002','002',86);
INSERT INTO Course VALUES('003','英语','2003');
INSERT INTO Course VALUES('004','马克思','2004');
INSERT INTO SC VALUES('1001','001',76.5);
INSERT INTO SC VALUES('1001','002',78.5);
Sname VARCHAR2(20),
Sage NUMBER,
Ssex VARCHAR2(4)
)
--Teacher(T#,Tname) 教师表
CREATE TABLE Student.Teacher
(
T# VARCHAR2(4) PRIMARY KEY,
Tname VARCHAR2(20)
SELECT * FROM SC
--1、查询“001”课程比“002”课程成绩高的所有学生的学号;
SELECT a.S#
FROM (SELECT S#,score FROM SC WHERE c#='001') a,(SELECT S#,score FROM SC WHERE c#='002') b
WHERE STUDENT.S# = SC.S#
AND C# = '001'
) S_2
WHERE SCORE2 < SCORE;
--9、查询所有课程成绩小于60分的同学的学号、姓名;
SELECT DISTINCT a.S#,a.Sname
WHERE a.S#=b.S# AND a.score>b.score
--上下性能比较 0.016<0.031
SELECT a.S#
FROM
(
SELECT S#
,SUM(CASE WHEN C#='001' THEN score ELSE 0 END) AS'2003','周天');
相关文档
最新文档