gpt4 book ai didi

sql - 分组依据,然后仅选择 bool 列的每个值都为真的记录

转载 作者:行者123 更新时间:2023-11-29 11:56:18 24 4
gpt4 key购买 nike

我有一个 MS SQL 数据库和一个 postgres 数据库。任何一个解决方案都可以,因为我可以翻译它。

我们有一个customer_phone 表,其中相关的列是:

id, customer_id, phone, is_bad

我需要做的是从此表中选择所有只有 is_bad = truecustomer_id。所以如果你有 1 个好电话号码和 1 个坏电话号码,你就不应该出现。

出于某种原因,我正在努力寻找一种简单的方法来做到这一点,我觉得它应该看起来很简单。

这是一个开始,至少让我了解了所有客户的好坏数据,但我想知道是否有一种方法不需要使用子查询和 in的?

select  customer_id, is_bad, count(customer_id)
from customer_phone cp
group by customer_id, is_bad
order by customer_id desc

最佳答案

我发现在像这样的 bool 列上添加的最直观的方法是 SUMTRUE 时为 1 的列和 0FALSE 时:

CASE WHEN some_bool THEN 1 ELSE 0 END

所以在你的情况下:

SELECT id
FROM phones
GROUP BY id
HAVING
SUM(CASE WHEN NOT is_bad THEN 1 ELSE 0 END) = 0

查看 this SQL fiddle它显示了正在运行的查询。

关于sql - 分组依据,然后仅选择 bool 列的每个值都为真的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com