我正在努力解决以下问题: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'。
非常感谢任何帮助。
答案 0 :(得分:0)
很明显,整个表格中只有3种不同的acc_fk。现在,你为什么要计算其中一个用于2型,其中两个用于试用3?为什么不相反呢?
你是对的,其他方式也可以。我已经更新了问题。有意义吗?
这是一个非常奇怪的问题,因为它会导致不确定的结果。
SELECT type, COUNT(*)
FROM (SELECT acc_fk, type FROM t1 GROUP BY acc_fk) t
GROUP BY type
在sqlfiddle上查看。