■■求sql的对列的统计■■ (带年份的)

l285791700 2009-05-05 07:18:27
id price(价格) name datetime
1 20 一部 2008.09.09
2 25 一部 2009.02.19
3 10 一部 2009.02.20
4 30 二部 2009.03.09
5 15 三部 2009.04.05
。。。。。。

想实现如下查询结果(2009年):

name total(总计)
一部 35
二部 30
三部 15
。。。。。

如果加入判断呢?比如总计大于22以上的所有结果呢?

查询table表里有关于"一部"的所有2009年的价格(price)的总和 和 "二部"的所有今年2009年价格(price)的总和等等这些数值的列表
如何用SQL语言表示。。
谢谢!


...全文
51 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyde100 2009-05-05
  • 打赏
  • 举报
回复
--原理:
1、where的使用
2、group by与having的结合使用
hyde100 2009-05-05
  • 打赏
  • 举报
回复
select
name,
sum(price) as total
from tb
where year([datetime])=2009
group by name
having sum(price)>22
ws_hgo 2009-05-05
  • 打赏
  • 举报
回复
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 行受影响)
水族杰纶 2009-05-05
  • 打赏
  • 举报
回复
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*/
水族杰纶 2009-05-05
  • 打赏
  • 举报
回复
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*/
百年树人 2009-05-05
  • 打赏
  • 举报
回复
select
name,
total=sum(price)
from
tb
where
year([datetime])=2009
group by
name
having sum(price)>22
百年树人 2009-05-05
  • 打赏
  • 举报
回复
select
name,
total=sum(price)
from
tb
group by
name
having sum(price)>22

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧