1. sql 统计同类物品个数在总数中占的比例
假设你这个表名是 T,你要的结果是下面这一句 SQL:
Select T1.类型,T1.数量小计/T2.数量合计 as 比例
(Select T.类型,sum(T.数量) as 数量小计 from T Group By T.类型) T1
Left Join
(Select sum(数量) as 数量合计 from T) T2
ON 1=1
2. sql 查询每个存货编码的“数量”列出现最多的一项,并统计占比
create table temp as
select 编码,数量,rank()over(order by 数量 desc) as rn
from table_01
where 数量 is not null
;
select distinct
编码,
数量,
出现最多的次数 ,
出现最多的次数 /总数量 as 占比
from
(select 编码,
数量,
sum(rn) as 出现最多的次数
from temp
where rn = 1
group by 编码, 数量)a
left join
(select 编码,
max(rn) as 总数量
from temp
group by 编码
) b on a.编码 = b.编码
类似这样的 ,代码没调试,主要在于用rank按照数量降序排列;
3. sql 怎么求比例
declare @sumNum decimal(9,2)
set @sumNum=select sum([销售额]) from [产品销售表]
select [产品],sum([销售额]) as [销售额] ,sum([销售额])/@sumNum as [占比] from [产品销售表]
group by [产品]
4. 求一个SQL百分占比的写法
你没试吗?这就是所有占总销量80%的所有客户,您糊涂了吗?即然您只要了80%的客户,都是一个百分数,还有什么多少?还排什么序?
不过,看在分的面子上,后面我又给了您占总销量80%以上的所有客户按销量反排序的查询。
MSSQL:
select
A,
SUM(B) AS 销售额合计,
100*SUM(B)/(SELECT SUM(B) FROM 表) AS 占总百分比
FROM 表 group by A
HAVING 100*SUM(B)/(SELECT SUM(B) FROM 表)=80
select
A,
SUM(B) AS 销售额合计,
100*SUM(B)/(SELECT SUM(B) FROM 表) AS 占总百分比
FROM 表 group by A
HAVING 100*SUM(B)/(SELECT SUM(B) FROM 表)=80
占总销量80%以上的所有客户按销量排序。
select
A,
SUM(B) AS 销售额合计,
100*SUM(B)/(SELECT SUM(B) FROM 表) AS 占总百分比
FROM 表 group by A
HAVING 100*SUM(B)/(SELECT SUM(B) FROM 表)>=80
order by SUM(B) desc
5. SQL SEVER如何分类汇总后再求每一项所占的百分比
SELECT国家,sum(出口量)as出口数量,SUM(出口量)*100.0/(selectSUM(出口量)fromseamlesswhere年份=2015)as占比
FROMseamlesswhere年份=2015
groupby国家
orderby出口数量desc
6. SQL如何按比例查找结果。 比如某字段等于1的出现结果中占10% 等于2的占70%
3、使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例二、改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心
7. SQL实现占比
sqlserver写法
创建表
createtabletest
(idint,
namevarchar(1))
insertintotestvalues(1,'a')
insertintotestvalues(2,'a')
insertintotestvalues(1,'a')
insertintotestvalues(1,'a')
insertintotestvalues(2,'a')
执行
selecta.id,a.count1,(a.count1+0.0)/b.count2
from
(selectid,count(*)count1fromtestgroupbyid)a,
(selectcount(*)count2fromtest)b
结果
8. 用SQL查询占比
sqlserver写法
创建表
create table test
(id int,
name varchar(1))
insert into test values (1,'a')
insert into test values (2,'a')
insert into test values (1,'a')
insert into test values (1,'a')
insert into test values (2,'a')
执行
select a.id,a.count1,(a.count1+0.0)/b.count2
from
(select id,count(*) count1 from test group by id) a,
(select count(*) count2 from test) b
9. SQL语句计算男女员工各占比例。
假设表员工档案里有性别、姓名两个字段
select count(*) as 员工总数,sum(case when 性别=男 then 1 else 0 end) 男员工数,sum(case when 性别=男 then 1 else 0 end)/nullif(count(*),0) 男所占比例,sum(case when 性别=女 then 1 else 0 end) 女员工数,sum(case when 性别=女 then 1 else 0 end) /nullif(count(*),0)女所占比例
from 员工档案
你自己试试看吧
楼上的写的不错,但是最好注意一些除0问题,要是张空表会报除0错误的。
10. SQL 统计并按照统计排序
排序是我们在数据处理数据分析中经常要用到的方法,今天就简单介绍一下排序的几个方法
order by
窗口函数
dense_rank()over(partition by room_id order by live_time desc)
order by xx;代表对xx进行升序排列
order by xx desc 代表对xx进行降序排列,desc表示降序
order by通常跟limit一起搭配
order by xx limit 10代表取xx字段前10;
order by xx limit 20,20代表取字段xx排序在21-40之间的值
具体参考下面思维导图
如果排序列的值相同给相同的序列标签, 不留排序标签不跳过,例子如下