不同的水果品种经过SUM求和以后占总量的百分比SQL语句怎么写,谢谢大家!
表结构
CREATE TABLE [dbo].[apple](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[number] [int] NULL
) ON [PRIMARY]
apple 表内容
1 苹果 4
2 苹果 4
3 鸭梨 16
4 西瓜 3
5 习惯 5
查询之后结果按照品种的数量排序,并且有百分比
鸭梨 16 50%
西瓜 8 25%
苹果 8 25%
请问这条语句应该怎么写,谢谢大家!
表结构
CREATE TABLE [dbo].[apple](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[number] [int] NULL
) ON [PRIMARY]
apple 表内容
1 苹果 4
2 苹果 4
3 鸭梨 16
4 西瓜 3
5 西瓜 5
查询之后结果按照品种的数量排序,并且有百分比
鸭梨 16 50%
西瓜 8 25%
苹果 8 25%
请问这条语句应该怎么写,谢谢大家!
select name ,num ,convert(varchar(10),cast(num/(select sum(number) from apple)*100 as decimal(9,2)))+'%' as bf
from (select name ,sum(number) as num from apple group by name ) a
CREATE TABLE [dbo].[apple](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[number] [int] NULL
) ON [PRIMARY]
insert apple select '苹果', 4
union all select '苹果', 4
union all select '鸭梨', 16
union all select '西瓜', 3
union all select '西瓜', 5
select name,sum(number) 数量,cast(cast(sum(number)*1.0/(select sum(number) from apple)*100 as dec(4,2)) as varchar(5))+'%' 百分比 from apple group by [name] order by 百分比 desc
drop table apple
name 数量 百分比
-------------------------------------------------- ----------- ------
鸭梨 16 50.00%
苹果 8 25.00%
西瓜 8 25.00%
(所影响的行数为 3 行)
SELECT Name, SUM([number]),
STR(SUM([number])/(SELECT SUM([number])+0.00 FROM apple)*100,4,2)+'%'
FROM apple
GROUP BY name
xiaoku(野蛮人(^v^)) ( ) 你好快啊!
select name ,num ,convert(varchar(10),cast(num/(select sum(number) from apple)*100 as decimal(9,2)))+'%' as bf
from (select name ,sum(number) as num from apple group by name ) a
order by num
---之前的少了个排序的
SELECT Name, SUM([number]),
STR(SUM([number])/(SELECT SUM([number])+0.00 FROM apple)*100,4,2)+'%'
FROM apple
GROUP BY name
ORDER BY SUM([number]) DESC
---额也少了一个排序
select
cast(datediff(s,getdate(),'2006-12-31 18:00:00.000')/3600 as varchar)+'小时'
+cast(datediff(mi,getdate(),'2006-12-31 18:00:00.000')%60 as varchar)+'分'
+cast(datediff(s,getdate(),'2006-12-31 18:00:00.000')%60 as varchar)+'秒' 距下班时间还剩
距下班时间还剩
---------------------------------]
1小时11分15秒
(所影响的行数为 1 行)