VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1585|回复: 12

请教几个超级简单的SQL语句:

[复制链接]

3

主题

12

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-9-25 18:30:01 | 显示全部楼层 |阅读模式
1. 有一个表,名称,数量..已经按降序排好了的.
求出它的前面20%的名称的,数量之合.
类似于:

select top 20 percent 数量from 表名  //这句话可以..
//下面的就不行了.
declare @departtotal int
select @departtotal = sum (select top 20 percent 数量from 表名)
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-9-25 18:45:01 | 显示全部楼层
--try

declare @departtotal int
select top 20 percent @departtotal=sum(数量) from 表名
select @departtotal
回复

使用道具 举报

0

主题

100

帖子

53.00

积分

新手上路

Rank: 1

积分
53.00
发表于 2020-9-25 19:00:01 | 显示全部楼层
试试:
declare @departtotal int
select @departtotal = sum(数量) from (select top 20 percent 数量 from 表名) t
回复

使用道具 举报

3

主题

12

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-9-25 23:00:01 | 显示全部楼层
fanfan1980  不知为什么,你的求出来的是总合..
unkmass   呵呵,你的可以. 想了一会才明白后面为什么要一个"t"
回复

使用道具 举报

2

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-9-26 00:00:01 | 显示全部楼层
学习一下
回复

使用道具 举报

1

主题

13

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-9-26 13:00:02 | 显示全部楼层
试试:
declare @departtotal int
select @departtotal = sum(数量) from (select top 20 percent 数量 from 表名) t

-------------
留下一个标记
想问一下@departtotal = sum(数量) 和去掉sum有什么区别呢 因为你来自的一个表t里面只有数量 那么选择出来的就是 前20%的数量 结果和 select top 20 percent 数量 from 表名 查询的结果是一样的 不明白,希望解释一下
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-9-26 13:30:01 | 显示全部楼层
没有SUM(),出来的是明细数据
有了SUM(),结果才是汇总数据(求和)
回复

使用道具 举报

0

主题

126

帖子

73.00

积分

新手上路

Rank: 1

积分
73.00
发表于 2020-9-26 13:45:01 | 显示全部楼层
还有一点,它用变量来保存结果,如果不用SUM(),返回多条记录的话,select @departtotal = sum(数量)就会出错。

用了SUM(),结果就保证只有1条汇总数据,不会出现上述错误。
回复

使用道具 举报

1

主题

13

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-9-26 14:00:01 | 显示全部楼层
错了
刚才事了一下
不好意思
回复

使用道具 举报

1

主题

13

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-9-26 14:15:01 | 显示全部楼层

那谁知道为什么第一个语句
select top 20 percent @departtotal=sum(数量) from 表名

select sum(数量) from 表名
的结果一样呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表