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子句之外.只将列放在那里你想要独特输出.