gpt4 book ai didi

sql - 在 SQL 中查找具有超过 1 个列值的记录

转载 作者:行者123 更新时间:2023-12-05 01:47:37 24 4
gpt4 key购买 nike

为了简化这里的事情是我的表结构:

表名:OCRD

CardCode       E_Mail          U_NoEmail
123 test@hi.com Y
124 test@hi.com N
125 other@hi.com Y
126 mail@hi.com N

该表包含一个唯一 ID、一个电子邮件地址和第三列 (U_NoEmail),它显示了对电子邮件选择加入或不接收电子邮件的偏好.这有点违反直觉,Y = 选择退出,N = 选择加入U_NoEmail 列也可以是 NULL

我正在尝试对该表使用单个查询来返回计数。该计数是表中具有多个 U_NoEmail 值的电子邮件地址的数量。换句话说,我想找出选择加入和退出的电子邮件地址总数,从业务角度来看这没有帮助。

我不知道该怎么做。例如,我可以使用以下查询通过电子邮件地址获取此信息:

SELECT E_Mail, COUNT(DISTINCT E_Mail) 
FROM OCRD
GROUP BY E_Mail
HAVING COUNT(DISTINCT U_NoEMail) > 1

它返回具有多个 U_NoEmail 值的所有地址。但我无法弄清楚如何将其作为一个总计。如果我尝试以下操作:

SELECT COUNT(*) FROM
(
SELECT E_Mail, COUNT(DISTINCT E_Mail)
FROM OCRD
GROUP BY E_Mail
HAVING COUNT(DISTINCT U_NoEMail) > 1
) result

我得到错误:没有为“结果”的第 2 列指定列。

最佳答案

试试这个,你应该为子查询中的每一列命名

SELECT COUNT(*) FROM
(
SELECT E_Mail, COUNT(DISTINCT E_Mail) **as distEmail**
FROM OCRD
GROUP BY E_Mail
HAVING COUNT(DISTINCT U_NoEMail) > 1
) result

关于sql - 在 SQL 中查找具有超过 1 个列值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917286/

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