最近发现自己写sql不熟练,花些时间强化练习,下面是我在博客园里找的题,都自己做了遍:
1.一道SQL语句面试题,关于group by
表内容:
小王 胜
小王 胜
小王 负
小王 负
小张 胜
小张 负
小张 负
如果要生成下列结果, 该如何写sql语句?
胜 负
小王 2 2
小张 1 2
------------------------------------------
构建题目:
create table #chase(name varchar(10),result nchar(1))
insert into #chase values('小王','胜')
insert into #chase values('小王','胜')
insert into #chase values('小王','负')
insert into #chase values('小王','负')
insert into #chase values('小张','胜')
insert into #chase values('小张','负')
insert into #chase values('小张','负')
我的答案:
答案2:
结果:
2.请教一个面试中遇到的SQL语句的查询问题
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name
3.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
构建题目:
我的答案:
结果:
4.请用一个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
------------------------------------------
构建表:
我的答案:
结果:
5。要求:设计一个查询,返回结果如下:
ID 日期 单据
---------- ----------- ---
1 2004-08-02 001
4 2004-09-02 002
即对于每个单据号,返回日期最小的行。
方法二、方法三:
结果: