日期:2014-05-18  浏览次数:20601 次

菜鸟的查询语句!!!急!!!
如下表:
班级                 人数
1班                   20
2班                   10
3班                   70

查询结果要求:每个班的名称   人数   及该班级所占总数的百分比

------解决方案--------------------
select a.* , cast(a.人数*1.0/b.总人数 as decimal(18,2)) as 比例 from tb a,
(select sum(人数) as 总人数 from tb) b
where a.班级 = b.班级


select a.* , rtrim(cast(cast(a.人数*1.0/b.总人数 as decimal(18,2)) as varchar(10))) + '% ' as 比例 from tb a,
(select sum(人数) as 总人数 from tb) b
where a.班级 = b.班级
------解决方案--------------------
CREATE TABLE TEST(BJ NVARCHAR(20),QTY INT)
INSERT TEST SELECT '1班 ', 20
INSERT TEST SELECT '2班 ', 10
INSERT TEST SELECT '3班 ', 70
--SELECT * FROM TEST

--每个班的名称 人数 及该班级所占总数的百分比
SELECT
BJ,
QTY,
RATE=CAST(QTY AS DECIMAL(18,2))/(SELECT SUM(QTY) AS ZS FROM TEST)
FROM TEST

DROP TABLE TEST
------解决方案--------------------
CREATE TABLE A(班级 NVARCHAR(20),人数 INT)
INSERT INTO A
SELECT '1班 ',20 UNION ALL
SELECT '2班 ',10 UNION ALL
SELECT '3班 ',70
SELECT A.*,A.人数*1.0/(SELECT SUM(人数) FROM A) 比率 FROM A
--结果
CREATE TABLE A(班级 NVARCHAR(20),人数 INT)
INSERT INTO A
SELECT '1班 ',20 UNION ALL
SELECT '2班 ',10 UNION ALL
SELECT '3班 ',70
SELECT A.*,A.人数*1.0/(SELECT SUM(人数) FROM A) 比率 FROM A
--结果
班级 人数 比率
-------------------- ----------- ---------------------------------------
1班 20 0.200000000000
2班 10 0.100000000000
3班 70 0.700000000000

(3 行受影响
------解决方案--------------------

create table T(班级 varchar(10), 人数 int)
insert T select '1班 ', 20
union all select '2班 ', 10
union all select '3班 ', 70

select *, 百分比=rtrim(人数*100/(select sum(人数) from T))+ '% ' from T

--result
班级 人数 百分比
---------- ----------- -------------
1班 20 20%
2班 10 10%
3班 70 70%

(3 row(s) affected)


------解决方案--------------------
create table Classes ([班级] char(5),[人数] int)
go
insert into Classes values ( '1班 ',20)
insert into Classes values ( '2班 ',10)
insert into Classes values ( '3班 ',70)
go
declare @summary int
select @summary=sum([人数]) from Classes
-- print @summary
select [班级],[人数],convert(float,[人数])/convert(float,@summary) as '百分比 ' from Classes