如何按类型计算唯一的数量(按整个集合中的第3个字段)ID

时间:2013-11-19 01:13:29

标签: mysql sql

我正在努力解决以下问题:http://sqlfiddle.com/#!2/b6a22/13

我有一个数据集:

| ID | NAME | TYPE | ACC_FK |                              TS |
|----|------|------|--------|---------------------------------|
|  1 |  qwe |    3 |    123 | November, 19 2013 00:43:33+0000 |
|  2 |  asd |    3 |    234 | November, 19 2013 00:43:33+0000 |
|  3 |  zxc |    2 |    123 | November, 19 2013 00:43:33+0000 |
|  4 |  wer |    2 |    345 | November, 19 2013 00:43:33+0000 |

我需要按类型计算唯一的数量(按整个集合中的acc_fk)ID。所以结果应该基于以下数据集(不包括'zxc'或'qwe'),例如:

| ID | NAME | TYPE | ACC_FK |                              TS |
|----|------|------|--------|---------------------------------|
|  1 |  qwe |    3 |    123 | November, 19 2013 00:43:33+0000 |
|  2 |  asd |    3 |    234 | November, 19 2013 00:43:33+0000 |
|  4 |  wer |    2 |    345 | November, 19 2013 00:43:33+0000 |

“整套中的acc_fk唯一”意味着我不想在任何类型的组中计算两次相同的acc_fk。查询的结果应该是:

+------------------+
| Type | COUNT(id) |
+------+-----------+
|  2   |    1      |
|  3   |    2      |
+------------------+

所以对于2型我想看'wer',对于3型我想看:'qwe'和'asd'。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  • @Mosty Mostacho

      

    很明显,整个表格中只有3种不同的acc_fk。现在,你为什么要计算其中一个用于2型,其中两个用于试用3?为什么不相反呢?

  • @Horoshiy

      

    你是对的,其他方式也可以。我已经更新了问题。有意义吗?

这是一个非常奇怪的问题,因为它会导致不确定的结果。

SELECT   type, COUNT(*)
FROM     (SELECT acc_fk, type FROM t1 GROUP BY acc_fk) t
GROUP BY type

sqlfiddle上查看。