MySQL 算作一列

标签 mysql sql database

我有如下表结构

leads
-id
-fname
-lname


subcontractors
-id
-leads_id
-fname
-lname
-status

潜在客户可以有多个分包商subcontractors.status 告诉分包商是活跃还是暂停

问题是如何选择带有计数列的潜在客户,该列显示他们有多少活跃和暂停的子客户?

我现在有这个:

SELECT 
l.id, 
l.fname, 
l.lname, 
s.status 
FROM leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id ORDER BY l.id DESC;

我的目标是拥有这样的东西

id | fname | lname | active_subcon_count | suspended_subcon_count 

最佳答案

您可以尝试使用条件聚合函数 COUNTCASE WHEN

SELECT 
    l.id, 
    l.fname, 
    l.lname, 
    COUNT(CASE WHEN s.status = 'active' THEN 1 END) ,
    COUNT(CASE WHEN s.status = 'suspended' THEN 1 END) 
from leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;

或者 mysql 可以像这样执行 SUM

SELECT 
    l.id, 
    l.fname, 
    l.lname, 
    SUM(s.status = 'active') active_subcon_count ,
    SUM(s.status = 'suspended') suspended_subcon_count 
from leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;

关于MySQL 算作一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420345/

相关文章:

php - 这段 PHP 代码有什么错误?

php - 使用 'whereNotIn' 的查询生成器抛出错误

mysql - 在进行外部联接时,很想在结果末尾获得不匹配的行吗?

database - 数据库和数据仓库有什么区别?

MySQL Workbench 的 Python 模块不工作

php - 尝试创建一个点击图片进行考勤的考勤系统。

sql - 如何将 accdb 转换为 postgres 数据库

mysql - 日期范围内的记录 - 性能

mysql - mysql 是否能够管理包含大量数据的站点的数据

sql-server - 我如何从两个不同的表中获取数据的层次结构?