一个关于sql的问题,急急急!!!(100分)

  • 主题发起人 主题发起人 s1520
  • 开始时间 开始时间
S

s1520

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一表:
设备名称 面积 等级
aa 500 1
bb 200 2
cc 100 1
cc1 100 2
要统计出
设备总数量 一 级 二 级
总数量 总面积 数量 面积 所占百分比 数量 面积 所占百分比
4 900 2 600 66.7 2 300 33.33
我试了半天都没有出来,帮帮我!!!!
 
嫌分太少吗?不好意思,我只有这么点了!
 
得出这个结果可以用两个SQL查出:
假设表名为Device,设备名字段为Devices,面积字段名为acreage,等级字段名为Grade
1:设备总数量
select count(*) as DeviceCount, sum(acreage) TotalAcreage from device
2:每级的数量、面积,所占百分比:
select count(*) as DeviceCount, sum(acreage) TotalAcreage,
sum(acreage)/(select sum(acreage)from device)*100
from device group by grade
如果想用一个SQL语句得出你写在上面的结果应该是做不出来。
 
用存储过程很容易实现。不要考虑用一条语句。
 
select grade,count(*),sum(area)
from tablename
group by grade
其他部分还没好
 
devExpress's dxDBGrid控件可以达到你的要求
www.51delphi.com
 
to 河清
能具体说说吗?谢谢!!!!!
 
依河清所说的可能简单些,
按我的思路,可依据输出建个临时表,再根据yhaochuan的SQL 将数据更新到临时表中,
输出临时表中的数据即可。


只是是个思路不见得最好,可参考以下。
 
to yhaochuan:
你的这句语句单独可以执行,但放在一起就不能执行了,不知为什么?
sum(acreage)/(select sum(acreage)from device)*100
谢谢sunmoon,你讲的方法和我最开始想的一样,谢谢你!!!!!!
 
想到了一个只用一句SQL做到的方法。
SELECT COUNT(*) AS DeviceCount, SUM(acreage) TotalAcreage, 100 Percent FROM device
UNION
SELECT COUNT(*) AS DeviceCount, SUM(acreage) TotalAcreage,
SUM(acreage)/(select sum(acreage)FROM device)*100
FROM device group by grade
ORDER BY Percent DESC
我上面给出的是两个SQL语句
第一个用于全部记录结总,
第二个用于各个级别的结总的。
 
谢谢各位的帮助,我现在用视图实现了,特别感谢yhaochuan,还有sunmoon.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部