从一个表中选择列并从另一个表中计数

Th3*_*m4n 3 sql oracle oracle-sqldeveloper

t1

id | name | include
-------------------
1  | foo  |  true
2  | bar  |  true
3  | bum  |  false

t2

id | some | table_1_id
-------------------------
1  | 42   |     1
2  | 43   |     1
3  | 42   |     2
4  | 44   |     1
5  | 44   |     3
Run Code Online (Sandbox Code Playgroud)

期望的输出:

name | count(some)
------------------
foo  | 3
bar  | 1
Run Code Online (Sandbox Code Playgroud)

我目前通过其他解决方案查看:

    SELECT      a.name, 
            COUNT(r.some)

FROM        t1 a
JOIN  t2 r on a.id=r.table_1_id
WHERE       a.include = 'true' 

GROUP BY    a.id,
            r.some;
Run Code Online (Sandbox Code Playgroud)

但这似乎得到了我

name | count(r.some)
--------------------
foo  | 1
foo  | 1
bar  | 1
foo  | 1
Run Code Online (Sandbox Code Playgroud)

我不是sql专家(我可以做简单的查询)所以我也在谷歌搜索,但找到我发现的大多数解决方案给我这个结果.我可能错过了一些非常简单的事情.

jue*_*n d 11

只需从group by子句中删除第二列

SELECT      a.name, 
            COUNT(r.some)    
FROM        t1 a
JOIN  t2 r on a.id=r.table_1_id
WHERE       a.include = 'true' 
GROUP BY    a.name
Run Code Online (Sandbox Code Playgroud)

要在聚合函数中使用的列,sum()或者count()必须将其排除在group by子句之外.只将列放在那里你想要独特输出.