SQL-如何计数和列出具有相同值的项目?

时间:2019-03-02 16:05:58

标签: sql group-by count mariadb

我有这个表(表名CH);

╔══════╦══════╦══════════╦══════════╗
║ ID_A ║ ID_B ║Category_A║Category_B║
╠══════╬══════╬══════════╬══════════╣
║   1  ║   a  ║    1     ║     1    ║
║   1  ║   b  ║    1     ║     2    ║
║   1  ║   c  ║    1     ║     3    ║
║   1  ║   a  ║    2     ║     1    ║
║   1  ║   b  ║    2     ║     1    ║
║   1  ║   c  ║    2     ║     1    ║
║   1  ║   a  ║    2     ║     2    ║
║   1  ║   b  ║    2     ║     2    ║
║   1  ║   b  ║    3     ║     1    ║
║   1  ║   c  ║    3     ║     1    ║
║   2  ║   a  ║    1     ║     1    ║
║   2  ║   b  ║    1     ║     1    ║
║   2  ║   a  ║    2     ║     1    ║
║   2  ║   c  ║    2     ║     1    ║
║   2  ║   b  ║    3     ║     1    ║
║   2  ║   c  ║    3     ║     1    ║
╚══════╩══════╩══════════╩══════════╝

ID(ID_A,ID_B),CAT(CAT_A,CAT_B)

ID(1,a)和ID(1,b)具有相同的类别CAT(2,1)和CAT(2,2)。

因此,对于ID(1,a)和ID(1,b),cnt_CAT = 2

我想要得到什么表:

╔══════╦══════╦═════════╦═════════════╗
║ ID_A ║ Pair ║ cnt_CAT ║   lst_CAT   ║
╠══════╬══════╬═════════╬═════════════╣
║   1  ║  a,b ║    2    ║{(2,1),(2,2)}║
║   1  ║  a,c ║    1    ║   {(2,1)}   ║
║   1  ║  b,c ║    2    ║{(2,1),(3,1)}║
║   2  ║  a,b ║    1    ║   {(1,1)}   ║
║   2  ║  a,c ║    1    ║   {(2,1)}   ║
║   2  ║  b,c ║    1    ║   {(3,1)}   ║
╚══════╩══════╩═════════╩═════════════╝

似乎完成了。如果使用SQL太困难了, 那么我可以忽略 lst_cat 列。

是否可以通过SQL获取Pair和cnt_CAT值?

0 个答案:

没有答案