如何计算一个sql表中同一字段的不同行

时间:2017-07-03 16:43:57

标签: mysql sql

嗨我有一个表,我试图获取同一行字段上不同行的计数,例如我有这个行

Function field1 field2 field3
'dog'    1      1      5
'dog'    1      1      5
'cat'    1      1      5
'dog'    1      2      6

此表的输出应为:

Function count
'dog'    2
'cat'    1

因为'狗'有两个不同的行。 (某些字段不同)和“cat'

的一行

非常感谢你

2 个答案:

答案 0 :(得分:3)

假设您要根据给定的字段子集计算相同的行,则为:

 SELECT func, COUNT(*) FROM (
     SELECT DISTINCT func, field1, field2 FROM yourtable
 ) AS tmp GROUP BY func;

这首先区分所有行,所以你得到了

'dog'    1      1      5
'cat'    1      1      5
'dog'    1      2      6

然后计算第一个字段,从而得到2和1。

您甚至可以执行类似

的操作
 SELECT func, COUNT(*) AS different, SUM(total) AS total FROM (
     SELECT   func, field1, field2, field3, COUNT(*) AS total 
            FROM yourtable
     GROUP BY func, field1, field2, field3
 ) AS tmp GROUP BY func;

将给出:

 func   different   total
 dog    2           3
 cat    1           1

答案 1 :(得分:3)

这应该可以为您提供所需的结果:

Select  Function, Count(*) As Count
From
(
    Select  Distinct
            Function,
            Field1,
            Field2,
            Field3
    From    YourTable
) As A
Group By Function