繁体   English   中英

mysql将三个计数重新分配到一个查询中

[英]mysql rephasing three counts into one query

我目前有三个查询,我想将其合而为一。 这是三个。

$sql = "SELECT Email FROM table GROUP BY Email having (sum(payment = 'paid')) = 0";
$sql = "SELECT count(DISTINCT Email) from table WHERE payment='paid'"; 
$sql = "SELECT count(DISTINCT Email) from table"; 

第一个查询是找到之前没有付款的用户,第二个查询是至少支付一次的,第三个是数据库中所有电子邮件的计数。

是否可以将它们合二为一? 谢谢

编辑最终结果应该给我一个这样的表

TotalDistinctUsers   NonpayingUsers   PayingUsers
     3                2                1

当前表结构

id   email           payment   item
1    abc@123.com      paid     newspaper
2    def@123.com      unpaid   magazine
3    ghi@123.com      unpaid   books
4    abc@123.com      unpaid   books

有一个黑客涉及但我认为它可以解决您的问题。 尝试一次,如果有效,我会解释你我做了什么:

    Select NonPayingusers, PayingUsers, TotalDistinctUsers FROM 

    (SELECT count(Distinct Email) as NonpayingUsers, 0 as id   FROM table GROUP BY Email 
having (sum(payment = 'paid')) = 0)t1

    left join(

    SELECT count(DISTINCT Email) as PayingUsers, 0 as id from table WHERE payment='paid'
    )t2 on t1.id =t2.id 

    left join(

    SELECT count(DISTINCT Email) as TotalDistinctUsers, 0 as id from table
    )t3 on t2.id =t3.id 

这里“t1,t2和t3”是临时表,每个表都添加了一个虚拟列“id”,以便它们可以在该列上连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM