首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多列的mysql多计数

具有多列的mysql多计数
EN

Stack Overflow用户
提问于 2016-05-09 13:50:13
回答 3查看 45关注 0票数 2

我设计了一个组织表格,如下所示:

代码语言:javascript
复制
Name          Supervisor     Manager
David            -            -
Josseph         David         -
Jenny           Josseph      David 
Step            Josseph      David
Mike            Josseph      David
steven          David

上面的图表解释说,大卫在组织的最高位置,约瑟夫和史蒂文向大卫汇报;珍妮、step和迈克向约瑟夫汇报。

我想知道有多少人向大卫汇报,大卫是多少人的经理?这是我想要的桌子:

代码语言:javascript
复制
Supervisor    Manager
2            3

只需要一个查询就能完成吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-09 14:01:03

http://sqlfiddle.com/#!9/f39ce/2

代码语言:javascript
复制
SELECT SUM(IF(Supervisor='David',1,0)),
  SUM(IF(manager='David',1,0))
FROM mytable

下面是一个分组查询的例子,如果您需要的话:

http://sqlfiddle.com/#!9/bdd738/5

代码语言:javascript
复制
SELECT t1.name,
  SUM(IF(t1.name=t2.Supervisor,1,0)),
  SUM(IF(t1.name=t2.manager,1,0))
FROM mytable t1
LEFT JOIN mytable t2
ON t1.name = t2.Supervisor
  OR t1.name = t2.manager
GROUP BY t1.name;
票数 3
EN

Stack Overflow用户

发布于 2016-05-09 13:58:37

它可以:

代码语言:javascript
复制
select Name as BossName,
sum( case when Supervisor = Name then 1 else 0 end) as Supervises,
sum( case when Manager = Name then 1 else 0 end) as Manages
 from your_table group by Name;

这会让你感觉到:

代码语言:javascript
复制
BossName Supervises    Manages

David    2             3
Josseph  3             0
Jenny    0             0
....     0             0
票数 2
EN

Stack Overflow用户

发布于 2016-05-09 14:03:09

使用以下查询

代码语言:javascript
复制
select name,(select count(*) from <table> where supervisor=name) as supervisor,
(select count(*) from <table> where manager=name) as manager    
from <table>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37117514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档