- 浏览: 1768325 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (520)
- Oracle (10)
- Oracle错误集 (8)
- Oracle安装升级 (15)
- Oracle日常管理 (51)
- Oracle字符集 (7)
- Oracle备份恢复 (24)
- Oracle优化 (4)
- Oracle编程 (52)
- Oracle导入导出 (19)
- Oracle体系结构 (15)
- Oracle网络 (2)
- Oracle安全 (2)
- Oracle权限 (3)
- Oracle数据字典和性能视图 (2)
- Oracle常用地址 (5)
- SQLPLUS专栏 (7)
- SqlServer (13)
- SqlServer2005编程 (27)
- SqlServer2005管理 (15)
- MySQL (20)
- Dorado应用 (1)
- C# (24)
- Arcgis Server开发 (20)
- ArcSDE技术 (19)
- UML学习 (2)
- 设计模式 (2)
- JAVA EE (4)
- JavaScript (3)
- OFBIZ (27)
- JAVA WEB开发 (22)
- Linux&Unix (34)
- SHELL编程 (14)
- C语言 (11)
- 网络协议 (14)
- FREEMARKER (2)
- GROOVY (2)
- JAVA语言 (3)
- 防火墙 (0)
- PHP (2)
- Apache (2)
- Loader Runner (1)
- Nginx (3)
- 数据库理论 (2)
- maven (1)
最新评论
-
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
pg_guo:
感谢
oracle中查看用户权限 -
xu234234:
5、MapResourceManager控件中添加了两个服务, ...
北京ArcGis Server应用基础培训笔记1
IF OBJECT_ID('Stocks') IS NOT NULL
DROP TABLE Stocks;
GO
CREATE TABLE dbo.Stocks
(
dt DATETIME NOT NULL PRIMARY KEY,
price INT NOT NULL
);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060801', 13);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060802', 14);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060803', 17);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060804', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060805', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060806', 52);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060807', 56);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060808', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060809', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060810', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060811', 29);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060812', 29);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060813', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060814', 45);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060815', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060816', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060817', 55);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060818', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060819', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060820', 15);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060821', 20);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060822', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060823', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060824', 20);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060825', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060826', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060827', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060828', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060829', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060830', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060831', 10);
需求:找出股票价格大于或等于50的连续周期
解决方案:
方案一、子查询
SELECT MIN(dt) AS startrange, MAX(dt) AS endrange,
DATEDIFF(day, MIN(dt), MAX(dt)) + 1 AS numdays,
MAX(price) AS maxprice
FROM (SELECT dt, price,
(SELECT MIN(dt)
FROM dbo.Stocks AS S2
WHERE S2.dt > S1.dt
AND price < 50) AS grp
FROM dbo.Stocks AS S1
WHERE price >= 50) AS D
GROUP BY grp;
方案二、ROW_NUMBER函数:
SELECT MIN(dt) AS startrange, MAX(dt) AS endrange,
DATEDIFF(day, MIN(dt), MAX(dt)) + 1 AS numdays,
MAX(price) AS maxprice
FROM (SELECT dt, price,
dt - ROW_NUMBER() OVER(ORDER BY dt) AS grp
FROM dbo.Stocks AS S1
WHERE price >= 50) AS D
GROUP BY grp;
GO
DROP TABLE Stocks;
GO
CREATE TABLE dbo.Stocks
(
dt DATETIME NOT NULL PRIMARY KEY,
price INT NOT NULL
);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060801', 13);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060802', 14);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060803', 17);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060804', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060805', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060806', 52);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060807', 56);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060808', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060809', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060810', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060811', 29);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060812', 29);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060813', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060814', 45);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060815', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060816', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060817', 55);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060818', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060819', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060820', 15);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060821', 20);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060822', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060823', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060824', 20);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060825', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060826', 60);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060827', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060828', 70);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060829', 40);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060830', 30);
INSERT INTO dbo.Stocks(dt, price) VALUES('20060831', 10);
需求:找出股票价格大于或等于50的连续周期
解决方案:
方案一、子查询
SELECT MIN(dt) AS startrange, MAX(dt) AS endrange,
DATEDIFF(day, MIN(dt), MAX(dt)) + 1 AS numdays,
MAX(price) AS maxprice
FROM (SELECT dt, price,
(SELECT MIN(dt)
FROM dbo.Stocks AS S2
WHERE S2.dt > S1.dt
AND price < 50) AS grp
FROM dbo.Stocks AS S1
WHERE price >= 50) AS D
GROUP BY grp;
方案二、ROW_NUMBER函数:
SELECT MIN(dt) AS startrange, MAX(dt) AS endrange,
DATEDIFF(day, MIN(dt), MAX(dt)) + 1 AS numdays,
MAX(price) AS maxprice
FROM (SELECT dt, price,
dt - ROW_NUMBER() OVER(ORDER BY dt) AS grp
FROM dbo.Stocks AS S1
WHERE price >= 50) AS D
GROUP BY grp;
GO
发表评论
-
SQL Server 2005中处理表分区问题
2008-08-28 11:01 2012数据库性能调优是每一 ... -
SQL LIKE 通配符随笔
2008-07-04 09:26 1604通配符 说明 _ 与任意单字符匹配 % 与包含一 ... -
五种提高 SQL 性能的方法
2008-07-02 12:10 1128有时, 为了让应用程序运行得更快,所做的全部工作就是在这里或那 ... -
SQL操作全集
2008-07-02 12:01 1113SQL分类: DDL—数据定义语言(CREATE,ALTER, ... -
不同服务器数据库之间的数据操作
2008-07-02 11:56 1915--创建链接服务器 exec sp_addlinkedser ... -
远程连接操作
2008-07-02 11:52 1287--远程连接操作 /******************** ... -
合并分拆表
2008-07-02 11:46 1452--合并分拆表 /********************** ... -
行列互转
2008-07-02 11:45 1389--行列互转 /*********************** ... -
T-SQL查询学习笔记——求下属和祖先的算法
2008-04-10 14:08 1900构建试验环境: CREATE TABLE dbo.Employ ... -
T-SQL查询学习笔记——数据修改
2008-04-10 11:45 2802一、插入数据 包括:select into、insert e ... -
T-SQL查询学习笔记——使用TOP和APPLY解决常见问题
2008-04-09 14:45 20721、每组中的TOP n问题 CREATE UNIQUE IND ... -
T-SQL查询学习笔记——TOP子句
2008-04-09 13:59 3204在select查询或表表达式中,top结合order by子句 ... -
T-SQL查询学习笔记——求中值的几种方法
2008-04-08 11:28 2770中值有两种定义: 1、当组中包含奇数个元素时,我们将直接返回中 ... -
Over 字句
2008-04-07 17:34 1531功能:确定在应用关联的窗口函数之前,行集的分区和排序。 适用 ... -
sql 的随机函数newID()和RAND()
2008-03-20 11:05 3058SELECT * FROM Northwind..Orders ... -
T-SQL查询学习笔记——已有范围和缺失范围示例代码
2008-03-19 15:30 1891USE SqlTest;GOIF OBJECT_ID('db ... -
T-SQL查询学习笔记——快速生成数字辅助表的几种方法示例代码
2008-03-19 14:17 2303------------------------------- ... -
SELECT 与 SET 对变量赋值的区别
2008-03-17 15:29 2825SQL Server 中对已经定义的变量赋值的方式用两种,分别 ... -
SQL逻辑查询处理步骤
2008-03-14 17:22 17601、执行笛卡尔乘积(交叉联接) 2、应用ON筛选器(联接条件) ... -
Server 2005 中集合操作(UNION、EXCEPT、INTERSECT)
2008-03-14 16:32 1439集合操作在两个输入中比较全部行。 Union:返回 ...
相关推荐
在《Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码》中,读者将深入学习这些概念,并通过实际的脚本示例了解如何在SQL Server 2005中应用它们。书中的源代码文件“TSQL_Querying_20061113”很可能包含了一...
它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...
《SQL Server 2012 T-SQL基础教程——源码与示例数据库》 本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程...
《SQL2008技术内幕——T-SQL查询》是一本深入探讨Microsoft SQL Server 2008数据库管理系统中T-SQL(Transact-SQL)查询的权威指南。T-SQL是SQL Server的核心语言,用于数据操作、存储过程编写、触发器定义以及...
T-SQL,全称Transact-SQL,是SQL语言的一个扩展,主要用于Microsoft SQL Server数据库管理系统。它是数据库查询、数据更新、事务...通过学习和实践这些示例,你可以深入了解T-SQL的强大功能,并提升数据库管理技能。
《SQL SERVER 2005技术内幕:T-SQL查询》是数据库开发人员不可或缺的一本指南,它深入探讨了SQL Server 2005中的Transact-SQL(T-SQL)查询技术。这本书以其详尽的解释和实用的示例,帮助读者掌握T-SQL查询的精髓,...
通过深入学习和实践这些T-SQL示例,可以有效提升SQL技能,无论是在数据库管理、数据查询,还是在开发数据库驱动的应用程序时,都将更加得心应手。建议逐步学习每个示例,并尝试将它们应用到实际问题中,以加深理解和...
本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们...
### SQL Server 2008 技术内幕:T-SQL...总之,《SQL Server 2008 技术内幕:T-SQL查询》为读者提供了一个系统学习SQL Server 2008中T-SQL查询技术的机会,无论是在理论知识方面还是实践操作层面都有着极其重要的价值。
Microsoft SQL Server 2005技术内幕:T-SQL查询 pdf 中文版 第二部分 第一部分地址:http://download.csdn.net/source/2684220
《T-SQL示例大全》是一个综合性的资源集合,涵盖了SQL语言中的Transact-SQL(T-SQL)的大量实例,适用于在Windows环境下使用SQL Server数据库管理系统进行开发和管理的人员。T-SQL是Microsoft SQL Server所扩展的...
**T-SQL(Transact-SQL)是微软SQL Server...学习和熟练掌握T-SQL是成为高效SQL Server数据库管理员或开发者的必要条件。通过深入研究提供的帮助文档,你可以了解所有T-SQL的关键概念,提升你的数据库管理和编程技能。
《2008技术内幕:T-SQL查询...总的来说,《2008技术内幕:T-SQL查询源代码》是一本深入探讨SQL Server T-SQL查询的宝贵资源,通过系统学习,读者将能够编写出更加高效、可维护的数据库查询,提升数据库系统的整体性能。
学习sql server 和sql 的两本经典的著作: 《sql server 2005 技术内幕 T-SQL查询》 《sql server 2005 技术内幕 T-SQL程序设计》 网上大多的资源都是英文的,好容易找到中文的了,上传上来和大家分享。 这两本书都...
T-sql基本语法示例 1.建库建表,建约束 2.查询 3.视图 4.存储过程 5.触发器
Microsoft SQL Server 2008技术内幕:T-SQL语言基础的示例数据库无法再国外的网址上下载,这个是已经下载好的
T-SQL不仅仅是简单的查询语言,它包含了如SELECT和UPDATE这样的语句,还是一个成熟的编程语言,允许程序员以非常强大的方式使用SQL Server。T-SQL允许用户编写存储过程在数据库内执行、集中业务逻辑在数据库中,并且...
### SQL Server 2005 T-SQL 概览与逻辑查询处理深度解析 #### T-SQL基础与增强功能 T-SQL(Transact-SQL)是Microsoft SQL Server特有的一种SQL方言,用于管理和操作数据库。SQL Server 2005版本对T-SQL进行了显著...
通过这些内容的学习,读者将能够熟练地使用T-SQL来解决实际问题,提升SQL Server数据库管理与开发的技能。记住,实践是检验学习效果的最佳方式,完成书中的练习并不断试验,将是掌握T-SQL的捷径。