计算模式如下
问题描述:
我有两个表计算模式如下
Table 1
ColumnA ColumnB
Account1 DeptA
Account2 DeptA
Account3 DeptA
Account4 DeptB
Account5 DeptB
Table 2
ColumnC ColumnA ColumnD ColumnE(Date)
Deposit1 Account1 10
Deposit1 Account2 20
Deposit1 Account3 10
Deposit2 Account1 10
Deposit2 Account2 30
Deposit2 Account3 30
Deposit3 Account2 20
Deposit3 Account3 10
Deposit1 Account4 20
Deposit1 Account5 20
Deposit2 Account4 10
Deposit2 Account5 20
Expected Output
Count Mode(ColumnD) ColumnC ColumnB
2 10 Deposit1 Dept1
2 30 Deposit2 Dept1
1 10 Deposit3 Dept1
2 20 Deposit1 Dept2
1 10 Deposit2 Dept2
我应该能够计算ColumnD的模式,如下面的SQL 从表1, 对于给定的ColumnB(集团由SQL Server为特定的方案ColumnB)为该组中的所有ColumnA计算具有列D值的同一ColumnC的模式
如果我们观察预期输出,则Dept1具有Account1,Account2和Account3。如果我们观察Deposit1也无论是在DEPT1和DEPT2但我们需要根据给定DEPT1和DEPT2计算模式
无论是存储过程或SQL是有帮助的
答
计算SQL模式是很容易 - 只需一个row_number()
与group by
操作。我认为以下是你正在做的事情:
select tt.*
from (select t1.columnb, t2.columnc, t2.columnd, count(*) as cnt,
row_number() over (partition by t1.columnb, t2.columnc order by count(*) desc) as seqnum
from table2 t2 join
table1 t1
on t2.columna = t1.columna
group by t1.columnb, t2.columnc, t2.columnd
) tt
where seqnum = 1;
columnb(result)从哪里来的?只能看到DeptA和B – maSTAShuFu
可能重复的[TSQL模式(如中,中位数,模式)](https://stackoverflow.com/questions/23532027/tsql-mode-as-in-mean-median-mode) – maSTAShuFu
columnB来自表1,外键ColumnA与表2关联 – TechJump