ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL算列

2019-10-24 17:24:24  阅读:149  来源: 互联网

标签:sql mysql 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 

解决方法:

您可以尝试在CASE WHEN中使用条件汇总函数COUNT

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可以这样做.

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;

标签:sql,mysql,database
来源: https://codeday.me/bug/20191024/1922245.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有