我有一张没有主键的表。它包含一个标记为“可用”标记字段的电子邮件地址。或者'不可用'。
我要做的是计算只有“可用”字样的电子邮件地址。标记,并且不计算可能具有“可用”行的不同电子邮件地址。和'不可用'标志。
我应该将表放入另一个表并开始使用不同的查询进行删除吗?
示例:由于test@gmail.com有两条记录,它仍然是一个不同的电子邮件地址;但是,我不想数这个,因为它有两个可用的'和'不可用'标志。
电子邮件标记 test@gmail.com可用 test@gmail.com不可用
感谢您的帮助!
约什
答案 0 :(得分:1)
您可以使用having
子句执行此操作:
select email
from table t
group by email
having sum(case when flag = 'unavailable' then 1 else 0 end) = 0 and
sum(case when flag = 'available' then 1 else 0 end) > 0;
如果您想要计算它们,只需将其用作子查询并将select count(*) from
放在外部查询中。
答案 1 :(得分:0)
这个怎么样:
SELECT SUM( CASE WHEN av = 1 AND unav = 0 THEN 1 ELSE 0 END ) AS totalavailableemails
FROM
(
SELECT email, MAX(CASE WHEN av = 1 THEN 1 ELSE 0 END) AS av, MAX(CASE WHEN unav = 1 THEN 1 ELSE 0 END) AS unav
FROM emails
GROUP BY email
) AS table1
其中av
是可用标记,unav
是不可用标记