分組計算資料的合MSSQL

2022-02-12 00:53:46 字數 1828 閱讀 4473

一張單位表unit:

id name

1 中石油

2 中移動

3 電信

另一張表info:

id unitid num point

1 1 1 2

2 1 2 1

3 2 1 1

4 3 2 2

若num=1時 得1分 若num=2時 得3分

若point=1時 得1分 若point=2 得3分

還有在info表中有單位紀錄一條得1分

希望得到的表如下

name 得分

中石油 10

中移動 3

電信 7

例舉第一條10分的計算(計算方式(在info表unitid為1時有兩條加2分,其中num乙個為1乙個為2所以加4分,point乙個為2乙個為1所以再加4分,總為10分)

)select

a.name,

sum(

case

when

b.num =1

then

1when

b.num =2

then

3else

0end)+

sum(

case

when

b.point=1

then

1when

b.point=2

then

3else

0end)+

sum(

case

when

b.unitid

isnot

null

then

1else

0end

) as

得分from

unit a

left 

join

info b

onb.unitid

=a.id

group

bya.name

left join ***  on  *** where

運用:select top 1 @rex=rex,@rey=rey,@rej=rej,@typex=typex,@typem=typem,@typeo=typeo,@stateq=stateq,@statej=statej,@casenum=casenum from t_assesspoint

if(@time1=null or @time1='' )

select a.unitname,sum(case when b.casecheckid = 1 then @rex when b.casecheckid = 2 then @rey when b.casecheckid=3 then @rej else 0 end)

+ sum(case when b.casetypeid= 1 then @typem when b.casetypeid= 2 then @typex when b.casetypeid=3 then @typeo else 0 end)

+sum(case when b.casestatus=1 then @stateq when b.casestatus=2 then @statej else 0 end)

+ sum(case when b.unitid is not null then @casenum else 0 end) as number

from t_unit a left join t_case b

on b.unitid = a.id where a.id in (select * from dbo.splitstr(@unitid,','))

group by a.unitname order by number desc

4 2 2 計算資料

4.2.2 計算資料 在這個應用程式的第乙個版本中,我們將只列印標籤,以及圖表中每一項所佔比例 百分比 要計算百分比,就需要知道列表中所有專案數值總和,這個值用清單 4.4 中的函式 calculatesum 來計算。清單 4.4 計算列表中的數值和 f interactive let rec ca...

SQLServer常用的執行計算 資料訪問操作符

1.scan及示例分析 scan依據表的不同,可以分為table scan,cluster index scan,以及針對非聚集索引的non clustered index scan這三種操作。聚集索引掃瞄 cluster index scan 將表中所有資料行都存在於聚集索引的葉節點中,所以,聚集...

python 計算資料的相關性

先解釋下什麼叫資料的相關性 計算兩個陣列的平均值,如果兩個陣列中的兩個值都大於平均值或者都小於平均值,則得到true.如果乙個大於平均值乙個小於平均值,則得到false.最後計算true和false的個數.比如,兩個陣列 1,2,3,4 and 4,5,6,7 得到 4,0 因為 1 和 4 都低於...