【发布时间】:2022-01-27 05:17:35
【问题描述】:
我有一个 psql 查询,其中在分组中使用了多个 WHERE 子句(带括号)
SELECT *
FROM customers
WHERE (location = 'NYC' OR location = 'BK')
AND (age > 18)
请注意,我有 2 个条件一起使用括号分组。
现在我正在尝试使用COUNT 函数从我的数据集中获取另一个数据,并且我目前正在使用HAVING 语句进行此操作。问题是似乎没有办法多次使用HAVING(在每个括号中),而应该在AND之后只使用一次,或者做类似HAVINGx和y等的事情。但是这不是我想要的。
我需要在每个括号中使用HAVING,如下所示:
SELECT customers.id as id
FROM customers
INNER JOIN friends ON friends.id = customers.id
WHERE (location = 'NYC' OR location = 'BK'
GROUP BY customers.id
HAVING COUNT(friends.id) > 2)
AND (age > 18
GROUP BY customers.id
HAVING COUNT(friends.id) > 10);
基本上(居住在纽约或 BK 的客户有 2 个朋友)和(18 岁以上的客户有超过 10 个朋友)
【问题讨论】:
-
使用方括号将它们分成几组是绝对关键的 :)
-
如何将 SQL 查询分成两部分,并在两部分上使用 UNION?
-
您缺少重要的必要信息。花几分钟时间回顾How to Ask。具体来说,更新您的问题以包括表定义 (ddl) 和示例数据(或者更好的是 fiddle)以及该数据的预期结果。全部作为文本 - 没有图像。另请查看Select 语句结构。每个选择或子选择只能有 1 个
having子句。
标签: sql postgresql