嵌套类型表的mysql组合计数

标签 mysql sql

我有一张大 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/

相关文章:

php - 在数据库字段中搜索

mysql - 选择两列中较小的日期时间

php - 用于在网站上打印交叉引用表的 SQL 查询

mysql - 添加约束、修改和约束

sql - 如何从 Oracle 中的句子中删除符号?

Mysql - 解释键为空

mysql - 为什么我必须运行两次迁移才能使值出现在数据库中?

c# - 通过服务器从 MySQL 数据库检索图像

php - 我的 PHP Controller 的结构是否错误?代码放错地方了

sql - '='附近的语法不正确