![](/img/trans.png)
[英]Having two (or three?) counts in one query MYSQL (Via phpmyadmin)
[英]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.