22,209
社区成员
发帖
与我相关
我的任务
分享
--原理:
1、where的使用
2、group by与having的结合使用
select
name,
sum(price) as total
from tb
where year([datetime])=2009
group by name
having sum(price)>22
DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME)
INSERT @T SELECT 1 ,20, N'一部' , '2008.09.09'
INSERT @T SELECT 2 ,25 , N'一部' , '2009.02.19'
INSERT @T SELECT 3 ,10 , N'一部' , '2009.02.20'
INSERT @T SELECT 4 , 30 , N'二部' , '2009.03.09'
INSERT @T SELECT 5, 15 , N'三部' , '2009.04.05'
select sum(price),[name],year([datetime]) from @T group by [name],year([datetime])
sum name 年份
----------- ---------- -----------
20 一部 2008
30 二部 2009
15 三部 2009
35 一部 2009
(4 行受影响)
DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME)
INSERT @T SELECT 1 ,20, N'一部' , '2008.09.09'
INSERT @T SELECT 2 ,25 , N'一部' , '2009.02.19'
INSERT @T SELECT 3 ,10 , N'一部' , '2009.02.20'
INSERT @T SELECT 4 , 30 , N'二部' , '2009.03.09'
INSERT @T SELECT 5, 15 , N'三部' , '2009.04.05'
SELECT [NAME],SUM(PRICE)TOTAL FROM @T WHERE DATEPART(YY,[DATETIME])=2009 GROUP BY [NAME]
HAVING SUM(PRICE)>22
--大于22
/*NAME TOTAL
---------- -----------
一部 35
二部 30*/
DECLARE @T TABLE(id INT, price INT, name NVARCHAR(10),[datetime]DATETIME)
INSERT @T SELECT 1 ,20, N'一部' , '2008.09.09'
INSERT @T SELECT 2 ,25 , N'一部' , '2009.02.19'
INSERT @T SELECT 3 ,10 , N'一部' , '2009.02.20'
INSERT @T SELECT 4 , 30 , N'二部' , '2009.03.09'
INSERT @T SELECT 5, 15 , N'三部' , '2009.04.05'
SELECT [NAME],SUM(PRICE)TOTAL FROM @T WHERE DATEPART(YY,[DATETIME])=2009 GROUP BY [NAME]
/*NAME TOTAL
---------- -----------
一部 35
三部 15
二部 30*/
select
name,
total=sum(price)
from
tb
where
year([datetime])=2009
group by
name
having sum(price)>22
select
name,
total=sum(price)
from
tb
group by
name
having sum(price)>22