假设我有一个订阅表:

uid  | subscription_type 
------------------------  
Alex | type1
Alex | type2
Alex | type3
Alex | type4
Ben  | type2
Ben  | type3
Ben  | type4

并且只想 Select 订阅次数超过2次但从未使用类型1订阅的用户

预期结果是只 Select "本".

我可以通过以下方式找到订阅次数超过2次的用户:

SELECT uid
FROM subscribes
GROUP BY uid
HAVING COUNT(*) > 2

但是,如何判断一个组中是否不存在某个值?

谢谢你的帮助!

推荐答案

try 以下查询:

SELECT uid 
FROM subscribes 
GROUP BY uid 
HAVING COUNT(*) > 2
   AND max( CASE "subscription_type"  WHEN 'type1' THEN 1 ELSE 0 END ) = 0

Postgresql相关问答推荐

Postgs SQL用于比较两个表之间的数据并填充到目标中

如何使用postgr sql regex删除重复项和inc表记录

计算两个子查询之间的差异

如何接受jsonb路径中的任何密钥?

PostgreSQL:重新创建主键值以匹配记录计数

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

错误:用户需要系统密码:postgres

使用FastAPI和PostgreSQL进行测试

Postgres >= 和 <= 具有特殊字符的行为

如何防止 PDO 将问号解释为占位符?

断言错误:Django-rest-Framework

在函数中返回字段作为插入结果

NOT LIKE 带有 NULL 值的行为

如何在 postgres 中使用 json_populate_recordset 解析 json

如何为 postgres 连接设置 application_name?

如何将主键添加到视图?

在 MAC OS X 10.6 for PostgreSQL 上设置 SHMMAX 等值

错误:关系列不存在 PostgreSQL,无法运行插入查询

为什么是||在 PostgreSQL/Redshift 中用作字符串连接

如何在 postgres 查询中排名