基本信息
源码名称:SQL分组查询简单示例代码
源码大小:3.86KB
文件格式:.sql
开发语言:C#
更新时间:2015-09-23
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
--我这定义的是零时表变量
DECLARE @History TABLE(
Id INT IDENTITY(1,1) --Id自增字段
,[Date] SMALLDATETIME --日期
,[Temperature] NUMERIC(20,10) --温度,表示十进制数长度为20位其中小数位10位
)
INSERT INTO @History([Date],[Temperature])
SELECT '2010-01-01',-8
UNION SELECT '2010-01-02',2
UNION SELECT '2010-02-01',14
UNION SELECT '2010-02-02',16
UNION SELECT '2010-12-31',12
UNION SELECT '2012-01-01',-9
UNION SELECT '2012-01-02',0
UNION SELECT '2012-02-01',10
UNION SELECT '2012-02-02',14
UNION SELECT '2012-02-29',19
UNION SELECT '2013-01-02',2
UNION SELECT '2013-02-01',12
UNION SELECT '2013-02-02',16
UNION SELECT '2013-02-28',19
--SELECT * FROM @History
--按年份 直接查询
SELECT YEAR([Date]) AS [Year]
,CASE WHEN (YEAR([Date]) % 4 = 0 AND YEAR([Date]) % 100 <> 0) OR YEAR([Date]) % 400 = 0 THEN 1 ELSE 0 END IsLeapYear --是否是闰年
,AVG([Temperature]) AS [AverageTemperature]
FROM @History
GROUP BY YEAR([Date]) --按年分组
-- 按年份 子查询模式
SELECT
[Year]
,CASE WHEN ([Year] % 4 = 0 AND [Year] % 100 <> 0) OR [Year] % 400 = 0 THEN 1 ELSE 0 END IsLeapYear --是否是闰年
,[AverageTemperature]
FROM
(
SELECT YEAR([Date]) AS [Year]
,AVG([Temperature]) AS [AverageTemperature]
FROM @History
GROUP BY YEAR([Date])
)
AS V
----------------------------万恶的分割线----------------------------------
--按 闰年/平年 直接查询
SELECT CASE WHEN (YEAR([Date]) % 4 = 0 AND YEAR([Date]) % 100 <> 0) OR YEAR([Date]) % 400 = 0 THEN 1 ELSE 0 END LeapYear --是否是闰年
,AVG([Temperature]) AS [AverageTemperature]
FROM @History
GROUP BY CASE WHEN (YEAR([Date]) % 4 = 0 AND YEAR([Date]) % 100 <> 0) OR YEAR([Date]) % 400 = 0 THEN 1 ELSE 0 END
--按 闰年/平年 子查询模式
SELECT
LeapYear
,AVG([Temperature]) AS [AverageTemperature]
FROM
(
SELECT CASE WHEN (YEAR([Date]) % 4 = 0 AND YEAR([Date]) % 100 <> 0) OR YEAR([Date]) % 400 = 0 THEN 1 ELSE 0 END LeapYear --是否是闰年
,[Temperature]
FROM @History
)
AS V
GROUP BY LeapYear