复杂的mysql查询计数

时间:2021-06-25 11:25:46

标签: mysql sql mysql-5.6

我有 1 个表名“公司”,其中包含多个数据,例如:

<头>
ID 所有者 公司 工作
1 约翰·多伊 公司 1 CEO
1 约翰·多伊 公司 2 CEO
1 约翰·多伊 公司 3 CEO
1 加布杜兰德 公司 4 CEO
1 罗布·杜恩 公司5 首席技术官
1 Alex DoeMorse 公司6 首席运营官

我需要的是按公司获得 1 行,其中一行计算每个人拥有的公司数量。

这是我想要的输出:

<头>
ID 所有者 公司 工作 计数
1 约翰·多伊 公司 1 CEO 3
1 约翰·多伊 公司 2 CEO 3
1 约翰·多伊 公司 3 CEO 3
1 加布杜兰德 公司 4 CEO 1
1 罗布·杜恩 公司5 首席技术官 1
1 Alex DoeMorse 公司6 首席运营官 1

mysql 查询可能是什么?

编辑:数据库版本 5.6.51

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以添加一个包含分析函数的额外列,例如

COUNT(*) OVER (PARTITION BY Id, owner) AS count

如果数据库版本是 8.0

因为有以前的数据库版本,所以更喜欢使用相关子查询,例如

SELECT Id, Owner, company, Job,
       (SELECT COUNT(*) 
          FROM t 
         WHERE id = tt.id 
           AND Owner = tt.Owner ) AS count
  FROM t AS tt

Demo

答案 1 :(得分:0)

查询:

SELECT Owner, Job, count(Company) NoOfCompanies 
FROM   companies 
WHERE  Job='CEO' 
GROUP BY Owner,Job;   

注意:对 Owner 和 Job 进行了分组,期望除“CEO”外还有其他值

相关问题