T-SQL练习题
转自:http://www.cnblogs.com/jenrrychen/p/5348546.html
1 - 3 题:
数据表结构:
OrderID ProductID OrderDate SaleAmount
1 1 2015-01-01 100
2 6 2015-02-01 900
3 1 2015-11-01 100
....
1. 找出2015年整年中销量最好(订单量最多)的3款产品。如果有多种方法实现更佳。
结果:
ProductID SaleQuantity
....
2. 找出2015年12个月中每个月销售总额最高的3个产品(如果存在相同的销售总额就一齐输出,例如第4名和第5名的销售总额恰好与第3名相同,同样输出)。如果有多种方法实现更佳。
结果:
SaleMonth ProductID SaleAmount
2015-01 X 11111
2015-02 Y 11111
3. 对每个产品在每一年内的按季度进行一个连续的销售额累加。如果有多种方法实现更佳。
4. 2015年全年销售总额最高的5款产品的每张订单在其订单时间过去一年内最高的销售额。如果有多种方法实现更佳。
5. 拼接结果集
;WITH T1 AS (
SELECT 'A' AS Col1
UNION
SELECT 'B' AS Col1
),
T2 AS (
SELECT 'C' AS Col1
UNION
SELECT 'D' AS Col1
UNION
SELECT 'E' AS Col1
UNION
SELECT 'F' AS Col1
),
T3 AS (
SELECT 'G' AS Col1
)
把这三个结果集拼接成:
T1_Col1 T2_Col1 T3_Col1
A C G
B D NULL
NULL E NULL
NULL F NULL
6. 合并字符串
表:tblOrder
OrderID CustomerID
1 1
2 1
3 1
4 2
5 3
6 2
7 4
8 4
....
按CustomerID为单位,把每个Customer的OrderID用逗号(,)合并在一起成为一个字符串,结果如下:
CustomerID OrderIDs
1 1,2,3
2 4,6
3 5
4 7,8
....
如果有多种方法实现更佳。
7. 寻找缺失数据区间。如果有多种方法实现更佳。
数据:
InvNo
1
2
3
6
8
9
19
结果:
StartNo EndNo
4 5
7 7
10 18
8. 构造数据
数据:
Date Value
2015-01-01 1
2015-01-03 2
2015-01-05 3
2015-01-07 4
2015-01-08 5
构造上面数据的N个副本,每个数据副本的最小日期(字段Date)为上一个副本的最晚日期加1天,字段Value保持和上一个副本一样。假设N为3,最终数据如下:
2015-01-01 1
2015-01-03 2
2015-01-05 3
2015-01-07 4
2015-01-08 5
2015-01-09 1
2015-01-11 2
2015-01-13 3
2015-01-15 4
2015-01-16 5
2015-01-17 1
2015-01-19 2
2015-01-21 3
2015-01-23 4
2015-01-24 5
9. 编写T-SQL产生下列数据
结果:
1
1
2
3
5
8
13
21
34
....
2584
10. 水池注水法/水柱灌水法
假设有5个圆柱体容器,每个圆柱体容器中有不同数量的球体,现在有N个球体可以填入这5个圆柱体容器中,需要按照灌水的方式先填充球体最少的圆柱体,再依次递增。比如:
圆柱体1: O
圆柱体2: OOOO
圆柱体3: OOOOOOO
圆柱体4: OOOOOOOOOO
圆柱体5: OOOOOOOOOOOO
O代表了圆柱体中的球体,现在手头上有12个新的球体,需要对圆柱体1->圆柱体2->圆柱体3(由少至多)分配球体,要均匀分配。
用T-SQL计算出每个圆柱体里面大概可以分配到多少份额的球体。
T-SQL练习题的更多相关文章
- SQL练习题完整(做完你就是高手)
SQL 练习题答案 一.补充作业一. 设有三个关系: S(SNO, SNAME, AGE, SEX,Sdept) SC(SNO, CNO ...
- 50道sql练习题和答案
最近两年的工作没有写过多少SQL,感觉水平下降十分严重,网上找了50道练习题学习和复习 原文地址:50道SQL练习题及答案与详细分析 1.0数据表介绍 --1.学生表 Student(SId,Snam ...
- SQL练习题汇总(Sqlserver和Mysql版本)
所需表及数据执行脚本: CREATE TABLE STUDENT (SNO ) NOT NULL, SNAME ) NOT NULL, SSEX ) NOT NULL, SBIRTHDAY DATET ...
- 面试题: 数据库 sql优化 sql练习题 有用 学生表,课程表,成绩表,教师表 练习
什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL.T-SQL). 存储过程的优点: 能够将代码封装起来 保存在数据库之 ...
- 50道SQL练习题及答案与详细分析!!!
以前在学校还没有很认真地意识到,现在到了企业才发现sql是那么的重要,看到网上有很多的sql 练习题,特地拿来练练手! 数据表介绍 --1.学生表 Student(SId,Sname,Sage,Sse ...
- j接近50道经典SQL练习题,附建表SQL解题SQL
说明 本文章整理了47道常见sql联系题,包括建表语句,表结构,习题列表,解题答案都涵盖在本文章内.文末提供了所用SQL脚本下载链接.所有解题答案都是本人自己写的,广大读者如果在阅读使用中,有任何问题 ...
- 50道SQL练习题及答案与详细分析(MySQL)
50道SQL练习题及答案与详细分析(MySQL) 网上的经典50到SQL题,经过一阵子的半抄带做,基于个人理解使用MySQL重新完成一遍,感觉个人比较喜欢用join,联合查询较少 希望与大家一起学习研 ...
- 很不错的sql练习题(select)
创建表和输入数据 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL, SNAME VARCHAR(4) NOT NULL, SSEX VARC ...
- hql和sql练习题
SQL与HQL练习题 中的所有员工. select * from emp where deptno = 30 from Emp e where e.deptno = 30 2. 列出所有办事员( ...
- 超经典SQL练习题,做完这些你的SQL就过关了
使用方法:我用的数据库是 Ms SQL Server 2008 ,练习时应当自己建数据,自己先思考,切勿急躁翻答案!否则效果减半,做完这些,恭喜你,你的 SQL 就算过关了. 测试表格 --1.学生表 ...
随机推荐
- c++ 开放随笔
1.设计或使用类时 一定先弄清流程 了解对象直接的关系(这个必须清楚) 如多对多,一对多,一对一关系.不然弄list map set时相对麻烦. 2.map 中key是不能重复的,可以看成一个主键,定 ...
- delphi中设置listview行高的方法
第一步.在form中放置一个ImageList: 第二步.将ListView的SmallImages设置为第一步中放置的ImageList: 第三部.将imageList的height设置成自己需要的 ...
- 如何在 React Native 中写一个自定义模块
https://my.oschina.net/jpushtech/blog/983230
- RabbitMQ消息确认(发送确认,接收确认)
前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题. 下面是几个问题: 1.为什么要进行消息确认? 2.rabbitmq消息确认 机制是什么样的? 3.发送方如何确认消息发送成功? ...
- python--list和tuple类型--2
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一.创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以 ...
- SqlBulkCopy类进行大数据(10000万条以上)插入测试
好多天没写博客了,刚刚毕业一个多月,在IT的路上真是迷茫啊! 关于上一篇博客中提到的,在进行批量数据插入数据库的时候可以通过给存储过程传递一个类型为Table的参数进行相关操作,在这个过程中本人没有进 ...
- testNG框架提示:Cannot find class in classpath: NewTest
selenium+Java的testNG运行时,报如下错误: org.testng.TestNGException: Cannot find class in classpath: NewTest a ...
- 通过ArcGIS Desktop数据发布ArcGIS Server
1.双击GIS Servers--->Add ArcGIS Server 2.选择Publish GIS Services 3.输入Server URL:http://localhost:608 ...
- Python 入门(二)Unicode字符串
Unicode字符串 字符串还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一 ...
- 为什么说在js当中所有类的父类是Object类
代码如下所示: function Parent(add,net,no,teacher) { this.add = add; this.net = net; this.no = no; this.tea ...