复杂 mysql 查询计数

Complex mysql query counting

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

编号 所有者 公司 工作
1 李四 公司 1 首席执行官
1 李四 公司 2 首席执行官
1 李四 公司 3 首席执行官
1 加布·杜兰德 公司 4 首席执行官
1 罗伯·杜金 公司 5 首席技术官
1 亚历克斯·多莫尔斯 公司 6 首席运营官

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

这是我想要的输出:

编号 所有者 公司 工作 计数
1 李四 公司 1 首席执行官 3
1 李四 公司 2 首席执行官 3
1 李四 公司 3 首席执行官 3
1 加布·杜兰德 公司 4 首席执行官 1
1 罗伯·杜金 公司 5 首席技术官 1
1 亚历克斯·多莫尔斯 公司 6 首席运营官 1

mysql 查询可能是什么?

编辑:数据库版本 5.6.51

谢谢!

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

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

查询:

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

注意:根据 Owner 和 Job 完成的分组期望您有其他值以及 'CEO'