sql - 如何查找只有一个值的列 - Postgresql

标签 sql postgresql select count aggregate-functions

我有 2 个表,person(email, first_name, last_name, postcode, place_name)location(postcode, place_name)。我试图找到住在只有一个人居住的地方的人。我尝试使用 SELECT COUNT() 但失败了,因为我不知道在这种情况下要计算什么。

SELECT DISTINCT email,
                first_name,
                last_name
FROM person
INNER JOIN location USING(postcode,
                          place_name)
WHERE 1 <=
    (SELECT COUNT(?))

最佳答案

聚合函数总是伴随着having:

SELECT DISTINCT first_value(email) over (partition by place_name),
                first_value(first_name) over (partition by place_name),
                first_value(last_name) over (partition by place_name),
                count(*)
FROM person
INNER JOIN location USING(postcode,
                          place_name)
GROUP BY place_name
HAVING count(*) = 1

有关窗口函数(如 first_value)的更多信息,请查看 this tutorial .

关于sql - 如何查找只有一个值的列 - Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58880045/

相关文章:

.net - SQL Server 中排除具有不同 ID(自动增量)的重复行的 SELECT 语句

postgresql - 如何只查询每天的最后一条记录

python - Django查询和终端中原始sql查询之间的执行时间差异

arrays - postgresql:选择数组

MySQL SELECT DISTINCT 的行为不符合预期

sql - 将sequelize查询转换为knex

sql - PostgreSQL 最小日期临时函数

MySQL:内部连接

postgresql - 如何语法检查 PostgreSQL 配置文件?

Mysql 给我不相关的结果