我有一张大 table :
BaseVar | BaseDate | BaseAttr | BaseValue | DependVar | DependDate | DependAttr | DependValue |
VarA 01/01 Na -1 VarA 01/01 Na -1
VarA 01/01 Br -1 VarB 01/01 Na 1
VarA 01/01 Hs -1 VarC 01/01 Na -1
VarB 01/01 Na 1 VarA 01/01 Na -1
VarB 01/01 Br 1 VarB 01/01 Na 1
VarB 01/01 Hs 1 VarC 01/01 Na -1
VarC 01/01 Na -1 VarA 01/01 Na -1
VarC 01/01 Br -1 VarB 01/01 Na 1
VarC 01/01 Hs -1 VarC 01/01 Na -1
VarA 01/02 Na 1 VarA 01/02 Na 1
VarA 01/02 Br 1 VarB 01/02 Na -1
VarA 01/02 Hs 1 VarC 01/02 Na -1
VarB 01/02 Na -1 VarA 01/02 Na 1
VarB 01/02 Br -1 VarB 01/02 Na -1
VarB 01/02 Hs -1 VarC 01/02 Na -1
VarC 01/02 Na -1 VarA 01/02 Na 1
VarC 01/02 Br -1 VarB 01/02 Na -1
VarC 01/02 Hs -1 VarC 01/02 Na -1
.
.
.
.
.
All the way to 12/30
Then again for:
BaseVar | BaseDate | BaseAttr | BaseValue | DependVar | DependDate | DependAttr | DependValue |
VarA 01/01 Na -1 VarA 01/01 Br -1
VarA 01/01 Br -1 VarB 01/01 Br 1
VarA 01/01 Hs -1 VarC 01/01 Br -1
VarB 01/01 Na 1 VarA 01/01 Br -1
VarB 01/01 Br 1 VarB 01/01 Br 1
VarB 01/01 Hs 1 VarC 01/01 Br -1
VarC 01/01 Na -1 VarA 01/01 Br -1
VarC 01/01 Br -1 VarB 01/01 Br 1
VarC 01/01 Hs -1 VarC 01/01 Br -1
VarA 01/02 Na 1 VarA 01/02 Br 1
VarA 01/02 Br 1 VarB 01/02 Br -1
VarA 01/02 Hs 1 VarC 01/02 Br -1
VarB 01/02 Na -1 VarA 01/02 Br 1
VarB 01/02 Br -1 VarB 01/02 Br -1
VarB 01/02 Hs -1 VarC 01/02 Br -1
VarC 01/02 Na -1 VarA 01/02 Br 1
VarC 01/02 Br -1 VarB 01/02 Br -1
VarC 01/02 Hs -1 VarC 01/02 Br -1
.
.
.
.
.
All the way to 12/30
Then again for:
BaseVar | BaseDate | BaseAttr | BaseValue | DependVar | DependDate | DependAttr | DependValue |
VarA 01/01 Na -1 VarA 01/01 Hs -1
VarA 01/01 Br -1 VarB 01/01 Hs 1
VarA 01/01 Hs -1 VarC 01/01 Hs -1
VarB 01/01 Na 1 VarA 01/01 Hs -1
VarB 01/01 Br 1 VarB 01/01 Hs 1
VarB 01/01 Hs 1 VarC 01/01 Hs -1
VarC 01/01 Na -1 VarA 01/01 Hs -1
VarC 01/01 Br -1 VarB 01/01 Hs 1
VarC 01/01 Hs -1 VarC 01/01 Hs -1
VarA 01/02 Na 1 VarA 01/02 Hs 1
VarA 01/02 Br 1 VarB 01/02 Hs -1
VarA 01/02 Hs 1 VarC 01/02 Hs -1
VarB 01/02 Na -1 VarA 01/02 Hs 1
VarB 01/02 Br -1 VarB 01/02 Hs -1
VarB 01/02 Hs -1 VarC 01/02 Hs -1
VarC 01/02 Na -1 VarA 01/02 Hs 1
VarC 01/02 Br -1 VarB 01/02 Hs -1
VarC 01/02 Hs -1 VarC 01/02 Hs -1
.
.
.
.
.
All the way to 12/30
我想得到的结果是:
BaseVar | BaseAttr| BaseValue| BaseAttrCount() | DependVar | DependAttr | DependantValue| DependAttrCount()|
VarA Na 1 cnt VarA Na 1 cnt
VarA Na -1 cnt VarA Na 1 cnt
VarA Na 1 cnt VarA Na -1 cnt
VarA Na -1 cnt VarA Na -1 cnt
VarA Br 1 cnt VarA Na 1 cnt
VarA Br -1 cnt VarA Na 1 cnt
VarA Br 1 cnt VarA Na -1 cnt
VarA Br -1 cnt VarA Na -1 cnt
VarA Hs 1 cnt VarA Na 1 cnt
VarA Hs -1 cnt VarA Na 1 cnt
VarA Br 1 cnt VarA Na -1 cnt
VarA Br -1 cnt VarA Na -1 cnt
VarA Na 1 cnt VarB Na 1 cnt
VarA Na -1 cnt VarB Na 1 cnt
VarA Na 1 cnt VarB Na -1 cnt
VarA Na -1 cnt VarB Na -1 cnt
VarA Br 1 cnt VarB Na 1 cnt
VarA Br -1 cnt VarB Na 1 cnt
VarA Br 1 cnt VarB Na -1 cnt
VarA Br -1 cnt VarB Na -1 cnt
VarA Hs 1 cnt VarB Na 1 cnt
VarA Hs -1 cnt VarB Na 1 cnt
VarA Br 1 cnt VarB Na -1 cnt
VarA Br -1 cnt VarB Na -1 cnt
VarA Na 1 cnt VarC Na 1 cnt
VarA Na -1 cnt VarC Na 1 cnt
VarA Na 1 cnt VarC Na -1 cnt
VarA Na -1 cnt VarC Na -1 cnt
VarA Br 1 cnt VarC Na 1 cnt
VarA Br -1 cnt VarC Na 1 cnt
VarA Br 1 cnt VarC Na -1 cnt
VarA Br -1 cnt VarC Na -1 cnt
VarA Hs 1 cnt VarC Na 1 cnt
VarA Hs -1 cnt VarC Na 1 cnt
VarA Br 1 cnt VarC Na -1 cnt
VarA Br -1 cnt VarC Na -1 cnt
(Next sequence would be : )
VarA VarA Br
After all those are done:
VarA VarA Hs
Then:
VarB VarA Na
Then:
VarB VarA Br
Then:
VarB VarA Hs
and so on until it would reach:
VarC VarC Hs
我正在尝试做的事情:
我正在尝试获取一天中出现基本变量时出现的因变量的每个组合。最后我想算一下 它计算发生碱基组合时发生的所有相关组合。例如,(BaseVar)VarA + (BaseAttr)Br + (BaseValue)1 出现了 50 次,当这个组合出现时, (DependVar)VarC + (DependAttr)Na + (DependValue)-1 出现了 18 次,(DependVar)VarB + (DependAttr)Br +(DependValue)-1 出现了 11 次,(DependVar)VarB + (DependAttr)Na +(DependValue )1 出现了 5 次,依此类推。 由于组合,会有很多行。我尝试了不同的分组和右连接,但无法正常工作。
Jfiddle 的尝试:sqlfiddle.com/#!9/17ddd/1
最佳答案
SELECT B.BaseCount, B.BaseVar, B.BaseAttr, B.BaseValue, COUNT(*) as DependCount, D.DependVar, D.DependAttr, D.DependValue from
(SELECT count(*) AS BaseCount, BaseVar, BaseAttr, BaseValue
FROM Weather
GROUP BY BaseVar, BaseAttr, BaseValue) AS B
JOIN Weather AS D
ON B.BaseVar = D.BaseVar AND B.BaseAttr = D.BaseAttr AND B.BaseValue = D.BaseValue
GROUP BY B.BaseVar, B.BaseAttr, B.BaseValue, D.DependVar, D.DependAttr, D.DependValue
ORDER BY B.BaseVar, B.BaseAttr, B.BaseValue
内部选择按每个 basevar-baseattr-basevalue 组合分组,然后连接使用匹配的 dependvar-dependattr-dependvalue 组合分解每个组。
关于嵌套类型表的mysql组合计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716162/