當前位置:首頁 » 編程語言 » sql計算排序佔比
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql計算排序佔比

發布時間: 2023-06-27 13:43:44

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

  • 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之間的值

  • 窗口函數

  • 具體參考下面思維導圖

  • dense_rank()over(partition by room_id order by live_time desc)

  • 如果排序列的值相同給相同的序列標簽, 不留排序標簽不跳過,例子如下