sql语句怎么写
表temp
id 产品名 数量 金额
a 2 100
b 1 200
c 3 300
b 2 400
b 4 800
a 1 50
c 2 200
.....
求累积销售金额最多的前四名产品,sql语句怎么写(用一条sql语句,可以用子查询),要求显示产品名与相对应的累积销售金额
问题点数:50、回复次数:28Top
1 楼jxwangzhigang(一棵草)回复于 2002-04-25 08:48:17 得分 0
select top 4 max(金额),产品名 form temp order by id
应该可以拉Top
2 楼ChinaOk(农村表哥)回复于 2002-04-25 08:48:27 得分 0
关注
Top
3 楼wangfei2428(龙飞)回复于 2002-04-25 08:51:00 得分 0
to :jxwangzhigang(一棵草)
select top 4 max(金额),产品名 form temp order by id
不对,您这个不是累积,而是取销售金额最大的前四名Top
4 楼jxwangzhigang(一棵草)回复于 2002-04-25 08:51:31 得分 0
对不起是这样的
select top 4 max(金额),产品名 form temp group by id
应该可以拉
Top
5 楼wangfei2428(龙飞)回复于 2002-04-25 08:54:08 得分 0
group by id
您是按ID分组,不行,而产品在表中是有重复的,应该group by 产品吧
Top
6 楼liangxuan1979(不贪)回复于 2002-04-25 08:59:45 得分 0
select top 4 id,Sum(金额) as TotalMoney from temp group by id order by TotalMoney desc
绝对正确!Top
7 楼jxwangzhigang(一棵草)回复于 2002-04-25 09:00:26 得分 0
对!是按产品分组!刚刚写错拉Top
8 楼ChinaOk(农村表哥)回复于 2002-04-25 09:03:39 得分 0
不行,要得不是这个结果。室汇总以后的Top
9 楼wangfei2428(龙飞)回复于 2002-04-25 09:08:17 得分 0
首先,产品在记录中有重复记录
其次,汇总金额最对的前四名产品
select top 4 id,Sum(金额) as TotalMoney from temp group by id order by TotalMoney desc
不对,提示“参数期待为1”
而且得不到产品的值Top
10 楼jxwangzhigang(一棵草)回复于 2002-04-25 09:10:53 得分 5
select top 4 id,Sum(金额) as TotalMoney from temp group by 产品名称 order by TotalMoney desc
这样呢?Top
11 楼liangxuan1979(不贪)回复于 2002-04-25 09:14:16 得分 0
你要把什么叫产品的值说清楚!!
另外:你在哪里测试的说提示“参数期待为1”??
我的Sum(金额) 中的“金额”是你表中的第三个Colum。而且它必须为数值型变量。
Top
12 楼liangxuan1979(不贪)回复于 2002-04-25 09:15:15 得分 0
我把ID当作产品名称了Top
13 楼wangfei2428(龙飞)回复于 2002-04-25 09:15:15 得分 0
不对,id与合计函数是不能放在一起的,提示
“合计函数不包括id”Top
14 楼wangfei2428(龙飞)回复于 2002-04-25 09:17:56 得分 0
金额肯定是数值型Top
15 楼liangxuan1979(不贪)回复于 2002-04-25 09:18:12 得分 0
我测试了可以,为什么你做的不行呢?
你干脆把你的数据库表完整地写出来吧!(每个字段名,及类型)Top
16 楼hiflash(小郑)回复于 2002-04-25 09:24:09 得分 0
“金额”是不是数据类型呢?
Top
17 楼wangfei2428(龙飞)回复于 2002-04-25 09:25:49 得分 0
我的数据库就怎么简单
id 自动编号
productname 字符型
total 数值型
Top
18 楼liangxuan1979(不贪)回复于 2002-04-25 09:29:13 得分 0
你干吗不早点说清楚:
select top 4 productname,Sum(total) as TotalMoney from temp group by productname order by TotalMoney descTop
19 楼wangfei2428(龙飞)回复于 2002-04-25 09:33:18 得分 0
我按照您的语句试过,提示
“参数不足,期待为1"Top
20 楼phoenixlj(旭毅)回复于 2002-04-25 09:37:56 得分 0
select top 4 productname,total=sum(total) from temp group by productnameTop
21 楼liangxuan1979(不贪)回复于 2002-04-25 09:38:10 得分 0
你在哪里测试的,你的是什么数据库?
我在SQL Server里测试了是正确的!
你最好把你表里的数据列部分出来给我看看!
象这样:
id productname total
----------- ----------------------------- -----------
1 a 100
2 b 300
3 c 500
4 d 500
5 e 200
6 f 300
7 a 300
8 a 300
9 b 500
10 c 500Top
22 楼wangfei2428(龙飞)回复于 2002-04-25 09:44:52 得分 0
access 2000与sql2000我都试过.
id kind productname total
998 仙人掌漆 裂纹漆透明底 200
999 仙人掌漆 裂纹天那水 200
1000 仙人掌漆 610-099 200
1001 仙人掌漆 213天那水 200
1002 仙人掌漆 213天那水 200Top
23 楼wangfei2428(龙飞)回复于 2002-04-25 09:48:40 得分 0
select top 4 productname,total=sum(total) from temp group by productname
不对,total=sum(total)格式不对Top
24 楼liangxuan1979(不贪)回复于 2002-04-25 09:51:31 得分 0
老兄,我用你的表测试了一下,还是没问题啊!Top
25 楼wangfei2428(龙飞)回复于 2002-04-25 09:52:47 得分 0
真的吗,您用的是sql服务器吗
Top
26 楼liangxuan1979(不贪)回复于 2002-04-25 09:56:05 得分 45
这是我在SQL Server里用
select top 4 productname,Sum(total) as TotalMoney from temp group by productname order by TotalMoney desc
查出的结果:
productname TotalMoney
-------------------------------------------------- -----------
213天那 700
610-099 500
裂纹天那水 300
裂纹漆透明底 100
(4 row(s) affected)
如果不行,那我也没办法了。
我在怀疑,你小子是不是在愚弄我!
Top
27 楼wangfei2428(龙飞)回复于 2002-04-25 09:59:35 得分 0
对不起,我没有愚弄您,先谢谢那
我先自己试试Top
28 楼wangfei2428(龙飞)回复于 2002-04-25 10:39:41 得分 0
sql
select top 4 productname,Sum(total) as TotalMoney from temp group by productname order by TotalMoney desc
access
select top 4 productname,Sum(total) as TotalMoney from temp group by productname order by Sum(total) desc
我调试成功,谢谢各位,散分感谢Top




