mysql - 在一张表中计算三个可能性
问题描述
我有一个包含两个字段的订阅者表,活跃和订阅。我需要在同一咨询中获取订阅者总数、激活数和订阅数。我尝试使用双左连接来做到这一点,但我需要按一个不是主键的字段进行分组,我得到了错误。我现在有这样的咨询:
FROM (SELECT subscribers.mailing_list, subscribers.mailing_list AS suscriptores, s2.inactivos AS inactivos, s3.excluidos AS excluidos
FROM subscribers
LEFT JOIN (SELECT id, mailing_list, COUNT(*) AS inactivos FROM subscribers WHERE subscribed = false GROUP BY id) s2 ON subscribers.id = s2.id
LEFT JOIN (SELECT id, mailing_list, COUNT(*) AS excluidos FROM subscribers WHERE excluded = true GROUP BY id) s3 ON subscribers.id = s3.id
) AS subs
GROUP BY subs.mailing_list```
解决方案
您需要在聚合函数内部而不是需要 3 个查询,case expressions
这被称为“条件聚合”,例如
SELECT
mailing_list
, COUNT( CASE WHEN subscribed = FALSE THEN 1 END ) AS inactivos
, COUNT( CASE WHEN subscribed = TRUE THEN 1 END ) AS excluidos
, COUNT( * ) AS Total
FROM subscribers
GROUP BY
mailing_list
推荐阅读
- jmeter - JMeter 报告显示一个请求的 3 个结果
- php - 无法在共享主机上通过 php 运行 bash 脚本
- powershell - 找不到“XmlMessageFormatter”的重载和参数计数:Powershell 中的 N 和 New-Object
- c - 在具有最新 XCode 的 MacOS Catalina 上,__DARWIN_C_LEVEL 对于 String.h 来说太低了……我该怎么办?
- docker - Debian 的 zic 缺少 -b 选项
- python - 如何允许客户端连接到 python 服务器?
- laravel - 两个模型的 Laravel 关系和枢轴
- css-selectors - 另一个类中包含的第一次出现的类的 CSS 选择器
- android - 在 TensorFlow Lite C API 中注册自定义算子
- python - 处理使用“http”下载的 JSON 时出错 - TypeError:字符串索引必须是整数