sql语句练习(2)
来源:互联网 发布:最悲惨的人生 知乎 编辑:程序博客网 时间:2024/05/07 04:00
1.请用一个sql语句得出结果
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。
table1
月份mon 部门dep 业绩yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8
table2
部门dep 部门名称dname
--------------------------------
01 国内业务一部
02 国内业务二部
03 国内业务三部
04 国际业务部
table3 (result)
部门dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9
------------------------------------------
select table2.部门名称dname,sum(case when table1.月份mon='一月份' then table1.业绩yj else 0 end) as '一月份'
from table1 ,table2
where table1.部门dep=table2.部门dep
group by table2.部门名称dname;
+---------------+--------+
| 部门名称dname | 一月份 |
+---------------+--------+
| 国内业务一部 | 10 |
| 国内业务三部 | 10 |
| 国内业务二部 | 10 |
| 国内业务四部 | 0 |
+---------------+--------+
2.华为一道面试题
一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
select A, count(*)
om td2
group by A
having count(*)>1;
Year Salary
2000 1000
2001 2000
2002 3000
2003 4000
想得到如下形式的查询结果
Year Salary
2000 1000
2001 3000
2002 6000
2003 10000
sql语句怎么写?
3、用一条SQL语句查询出每门课都大于80分的学生姓名
name
张三
李四
李四
王五
王五
王五
mysql> insert into stu(name,kecheng,fenshu) values('张珊','语文',81);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('张珊','数学',75);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('李四','语文',76);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('李四','数学',90);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('王五','数学',90);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('王五','语文',90);Query OK, 1 row affectedmysql> insert into stu(name,kecheng,fenshu) values('王五','英语',90);Query OK, 1 row affectedmysql> select * from stu;+------+---------+--------+| name | kecheng | fenshu |+------+---------+--------+| 张珊 | 语文 | 81 || 张珊 | 数学 | 75 || 李四 | 语文 | 76 || 李四 | 数学 | 90 || 王五 | 数学 | 90 || 王五 | 语文 | 90 || 王五 | 英语 | 90 |+------+---------+--------+7 rows in setmysql>
mysql> select distinct name from stu where name not in (select distinct name from stu where fenshu<80);+------+| name |+------+| 王五 |+------+1 row in set4.学生表 如下:
自动编号
1
2
3
删除除了自动编号不同,其他都相同的学生冗余信息
delete tablename where 自动编号 not in(select min(自动编号) from tablename group by 学号,姓名,课程编号,课程名称,分数)
delete from stu where name not in
(select a.name
from (select name from stu) a//只有mySql需要通过中间表转一下,否则会报错。);错误信息:
You can't specify target table 'stu' for update in FROM clause
5.请用SQL语句实现:从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。请注意:TestDB中有很多科目,都有1-12月份的发生额。
AccID:科目代码,Occmonth:发生额月份,DebitOccur:发生额。
数据库名:JcyAudit,数据集:Select * from TestDB
答:select a.*
from TestDB a
,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b
where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur
6
面试题:怎么把这样一个表儿
year
1991
1991
1991
1991
1992
1992
1992
1992
查成这样一个结果
year m1
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4
答案一、
select year,
(select amount from
(select amount from
(select amount from
(select amount from
from aaa
这个是ORACLE
select * from (select name, year b1, lead(year) over
(partition by name order by year) b2, lead(m,2) over(partition by name order by year) b3,rank()over(
partition by name order by year) rk from t) where rk=1;
/* 行转列之后又求平均分 问题:在上述结果的基础上加平均分,总分,得到如下结果: 姓名 语文 数学 物理 平均分 总分 ---- ---- ---- ---- ------ ---- 李四 74 84 94 84.00 252 张三 74 83 93 83.33 250 */ --SQL SERVER 2000 静态SQL。 select 姓名 姓名, max(case 课程 when '语文' then 分数 else 0 end) 语文, max(case 课程 when '数学' then 分数 else 0 end) 数学, max(case 课程 when '物理' then 分数 else 0 end) 物理, cast(avg(分数*1.0) as decimal(18,2)) 平均分, sum(分数) 总分 from tb group by 姓名
- sql语句练习(2)
- SQL语言 - where语句练习(2)
- 常用sql语句练习-2
- SQL语句练习以及答案 (2)
- sql语句编程手册(实用+练习)
- sql语句编程手册(实用+练习)
- SQL语言 - where语句练习(1)
- Oracle sql语句练习(转)
- sql查询语句练习(解析版)
- Oracle sql语句练习(转)
- SQL查询语句练习
- SQL 语句练习
- sql语句练习
- SQL语句练习
- SQL 语句练习
- sql语句练习
- Sql语句练习三
- sql 语句练习
- 简单迷宫问题的求解
- JS+CSS做一个模拟发短信的页面!
- 数组中出现次数超过一半的数字
- 【游戏设计模式】之一 序言:架构,性能与游戏
- 关于Android Studio中DDMS的模拟器控制(Emulator Control)不可用的问题
- sql语句练习(2)
- Vim 常用命令
- 用OpenCV实现Photoshop算法(六): 变为黑白图像
- Python虚拟环境搭建
- 基于fragment的页面切换功能
- 银行排号(C语言)
- 1119. Pre- and Post-order Traversals (30)-PAT甲级真题(前序后序转中序)
- Dijkstra算法求最短路径
- 使用achartengine时,偶现柱状图挡住了上方中间的标题