当前位置:  数据库>sqlserver

sql经典实例收集

    来源: 互联网  发布时间:2014-08-29

    本文导语:  一.我们经常要做数据统计的工作,如下示例统计各部门每月的工作业绩 table1(月份, 部门, 业绩) mon   dep        yj ------------------------------------------------------------ 1      1      10 1      2      10 1      3     ...

一.我们经常要做数据统计的工作,如下示例统计各部门每月的工作业绩
table1(月份, 部门, 业绩)
mon   dep        yj
------------------------------------------------------------
1      1      10
1      2      10
1      3      5
2      2      8
2      4      9
3      3      8
------------------------------------------------------------
table2(部门, 部门名称)
dep      dname
------------------------------------------------------------
1      A业务部
2      B业务部
3      C业务部
4      D业务部
------------------------------------------------------------
table3 (结果)
部门   一月份      二月份      三月份
------------------------------------------------------------
      1      10          0        0
      2      10          8        0
      3      0            5        8
      4      0            0        9
------------------------------------------------------------
 

代码如下:
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',
from table2 a left join table1 b on a.dep=b.dep group by a.dname

二.有一张成绩表,里面有3个字段:语文,数学,英语。请用一条sql语句查询出
这表里的记录并按以下条件显示出来:
   大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
       显示格式:
       语文              数学                英语
       及格              优秀                不及格  
--------------------------------------------------------------------------
 

代码如下:
select
(case when 语文>=80 then '优秀'
        when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
        when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
        when 英语>=60 then '及格'
else '不及格') as 英语,
from table

三.一张表内容如下:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
日期        胜 负
2005-05-09     2   2
2005-05-10     1   2
------------------------------------------
 

代码如下:

create table #tmp(
rq varchar(10),
shengfu nchar(1)
)

insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-10','胜')
insert into #tmp values('2005-05-10','负')
insert into #tmp values('2005-05-10','负')
1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负
' from #tmp group by rq

2) select N.rq,N.胜,M.负 from (
select rq,胜=count(*) from #tmp where shengfu='胜' group by rq)N inner join
(select rq,负=count(*) from #tmp where shengfu='负' group by rq)M on N.rq=M.rq

四.观众资料登记表
字段:编号,单位名称,姓名,手机.....
数据:.............................
题1:请查询姓名与手机重复的记录
题2:请查询一个单位名称有多个编号记录
题3:请查询一个单位名称只出来一条记录
    比如有两条记录 编号 单位名称 姓名 手机
                   001   协广    张三  137
                   002   协广    李四  138
随便只出现其中任意一条即可
请用SQL语句写出来
要求:不是自动编号,允许重复,所有字段都是字符串,没有主建,字段值不唯一!

题1:请查询姓名与手机重复的记录
 

代码如下:
SELECT *
FROM 观众资料登记表 a
WHERE [姓名]+[手机] IN
(SELECT [姓名]+[手机]
FROM 观众资料登记表 b
GROUP BY [姓名],[手机]
HAVING COUNT(*)>1
)

题2:请查询一个单位名称有不同编号记录
 

代码如下:
SELECT *
FROM 观众资料登记表 a
WHERE [单位名称] IN
(SELECT [单位名称]
FROM 观众资料登记表 b
GROUP BY [单位名称]
HAVING COUNT(*)>1
)

题3:请查询一个单位名称只出来一条记录 
 

代码如下:
SELECT DISTINCT [单位名称],
(SELECT TOP 1 [编号] FROM [观众资料登记表] b WHERE a.[单位名称] = b.[单位名称]) AS [编号],
(SELECT TOP 1 [姓名] FROM [观众资料登记表] b WHERE a.[单位名称] = b.[单位名称]) AS [姓名],
(SELECT TOP 1 [手机] FROM [观众资料登记表] b WHERE a.[单位名称] = b.[单位名称]) AS [手机]
FROM [观众资料登记表] a

五.学生表student,字段sID,sName,sAge;教师表teacher,字段tID,TName,tAge;教师-学生表ts,字段id,tID,sID。请统计每位教师有多少学生,要求教师年龄大于30,学生年龄大于12,并列出教师ID,教师姓名,学生人数
 

代码如下:

create table student(
sID int primary key,
sName varchar(50),
sAge int
)

insert into student values(1,'张三',9)
insert into student values(2,'张三2',14)
insert into student values(3,'张三3',33)
insert into student values(4,'张三4',11)
insert into student values(5,'张三5',19)
insert into student values(6,'张三6',25)
insert into student values(7,'张三7',27)
insert into student values(8,'张三8',23)

create table teacher(
tID int primary key,
tName varchar(50),
tAge int
)

insert into teacher values(1,'李明',29)
insert into teacher values(2,'李明2',34)
insert into teacher values(3,'李明3',23)
insert into teacher values(4,'李明4',31)
insert into teacher values(5,'李明5',19)

create table ts(
id int primary key,
sID int,
tID int
)

insert into ts values(1,1,2);
insert into ts values(2,2,3);
insert into ts values(3,3,2);
insert into ts values(4,4,3);
insert into ts values(5,5,4);
insert into ts values(6,6,2);
insert into ts values(7,7,4);
insert into ts values(8,8,2);

select t.tid,t.tname,count(*) from student s,teacher t,ts where s.sID = ts.sid and t.tid=ts.tid and s.sage>12 and t.tage>30 group by t.tid,t.tname


    
 
 

您可能感兴趣的文章:

  • sql语句实例 取得日志条目的sql语句
  • SQL分组排序去除重复实例
  • php防止sql注入代码实例
  • T-SQL实例 函数结果设置为列别名
  • 怎样不执行SELECT SQL语句即可获得ResultSetMetaData实例????
  • sql语句实例 统计一个特定页面中的相关链接
  • SQL分组排序去重复的小实例
  • sql语句实例 统计页面链接的sql语句
  • 教你怎么使用sql游标实例分享
  • mysqli多条sql语句查询实例
  • MSSQL中递归SQL查询语句实例说明-
  • sql语句not and or执行顺序(实例解析)
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • SQL语句练习实例之七 剔除不需要的记录行
  • SQL cursor用法实例
  • sql server 触发器实例(判断是插入、删除,还是修改)
  • sql中获取分组排序后数据方法实例
  • sql条件查询语句的简单实例
  • sql server 触发器实例:特定字段更新时触发Update触发器
  • sql语句like多个条件的写法实例
  • 请教:如何用shell实现指定log文件(比如a.log)中的指定内容(SQL_ID和SQL的处理部分)的收集
  • 收集了一些t-sql的技巧示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 经典Sql代码--取出点击量最高的文章100篇,每个作者不超过5篇
  • 经典sql代码--逐行计算、逐行递延、逐行更新
  • 经典sql代码--统计电话通话次数以及时长
  • 经典sql代码--有小时、分钟,求平均工作时间
  • 经典sql代码--统计文章各种分类总数
  • 经典sql代码--求每天的收入和支出
  • 经典sql代码--小计 合计 -统计
  • 经典sql代码--合并多行的某一列值
  • 经典sql代码--解决并清除SQL被注入恶意代码的语句
  • 经典sql代码--班级考试人数大于10、班级最低分在50分以上、计算机学院、班级平均分从高到低前10名
  • SQL Server SA权限总结经典技术
  • 经典sql代码--时间天数相差5天以上并且记录条数大于2的信息
  • 经典sql代码--近期价格处于降价趋势(至少调了3次)的所有商品
  • 经典SQL语句大全 常用sql语句汇总
  • 经典sql代码--按年龄段、品牌分类进行分组统计
  • 经典SQL语句大全-基础篇
  • 经典SQL语句大全-技巧篇
  • 经典sql代码--查询每个分类取最新的几条的SQL实现
  • 一条语句简单解决“每个Y的最新X”的经典sql语句
  • SQL分组排序去除重复实例 iis7站长之家
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3