我有一个问题,我现在花了3个多小时。它是这样的。 下面是Columns animal_id和birds_id的表格:
animal_id | bird_id
1 | 1
3 | 3
5 | 2
2 | 1
6 | 1
我需要编写一个SQL查询来计算Bird,以及Bird出现的动物数量。 输出应该是:
Number of Animals | Number of Birds
3 | 1
1 | 2
说明:上面的输出显示了这一点 第1行:Bird中的一个元素(Bird_id:1)在动物中出现3次。 第2行:鸟类中的两个元素(Bird_id:2和Bird_id:3)每个都出现在动物中。
到目前为止我的工作:尽我所能,我只能这么做:(
SELECT COUNT(*), COUNT(DISTINCT bird_id) AS D FROM myTable GROUP BY bird_id;
到目前为止的输出:
3 | 1
1 | 1
1 | 1
我在SQL查询方面不是很好。有人可以帮帮我吗?
答案 0 :(得分:2)
试试这个:
SELECT `Number of Animals`,
COUNT(*) AS `Number of Birds`
FROM (
SELECT bird_id, COUNT(*) AS `Number of Animals`
FROM mytable
GROUP BY bird_id ) AS t
GROUP BY `Number of Animals`
您需要一个更高级别的聚合才能获得所需的结果。
答案 1 :(得分:1)
你不必在bird_id上申请点数,试试这个:
select mt.number_of_Animal,count(*) from (select count(*) Number_of_animal, bird_id Bird_id from mytable group by bird_id) mt group by mt.number_of_Animal ;