CREATE TABLE tester(
name TEXT,
address TEXT
)
表格中的每个人都可以拥有多个地址。我想选择所有名称和他们拥有的地址数量> 1个地址。我试过了:
SELECT d.name, count(address) c FROM (SELECT DISTINCT ON(name) FROM tester) d
LEFT JOIN tester ON d.name = links.name
WHERE count(address) > 1
我明白了:
ERROR: syntax error at or near "FROM" Position: 64
我也尝试过DISTINCT ON查询:
SELECT DISTINCT ON(name) name, count(address) FROM tester HAVING count(address) > 1
我明白了:
ERROR: column "tester.name" must appear in the GROUP BY clause or be used in an aggregate function Position: 26
我觉得我太难了。
答案 0 :(得分:3)
只需使用GROUP BY
:
SELECT name, count(address)
FROM tester
GROUP BY name
HAVING count(address) > 1
SQL中的 GROUP BY
(以及其他语言)将始终生成不同的组,因此在这种情况下不需要DISTINCT
。
答案 1 :(得分:0)
您只需正确使用群组即可。像这样:
SELECT name, count(*)
FROM tester
group by name