MySQL对行进行数据分组和计数

时间:2018-06-19 17:43:32

标签: mysql

我有一个表,可容纳不同类型的数据。我想要实现的是,我想通过数据库运行查询以查找数量相等且内容相同的行,例如,列的ID为3行,而ID的ID为3行,所有行这些值是相同的。我想要     考虑作为一个小组,然后计算他们是多少。具有不同ID但值相同的行。然后有一张表,显示找到x个匹配项并包含this + this + this值的计数。这是在MySQL中

id  |  drug
--------------
1   | LAMIVUDINE
----------------
1   | ZIDOVUDINE
----------------
1   | 3TC
----------------
3   | TTC
-------------
4   | KKY
------------
4   | JJ2
-------------
4   | FFF
---------------
5   | LAMIVUDINE
----------------
5   | ZIDOVUDINE 
-----------------
5   | 3TC
------------------
8   | KKY
----------------
8   | JJ2
--------------
8   | FFF
---------------

count(id)个AS号

药品名称

number |  name
-------------------------------------
2      | LAMIVUDINE + ZIDOVUDINE + 3TC
---------------------------------------
2      | KKY + JJ2 + FFF
--------------------------------------`
1      | TTC
---------------------------------------

1 个答案:

答案 0 :(得分:1)

您可以使用group_concat+分隔符来连接具有相同ID的行,然后对连接值进行另一组操作以获得所需的输出

select count(*) number, names
from (
    select count(*) total, group_concat(drug order by drug separator '+') names
    from table1
    group by id
) t 
group by names

demo

order by子句在group by中很重要,因此串联的字符串值应具有相同的顺序