我有 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
谢谢!
答案 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
答案 1 :(得分:0)
查询:
SELECT Owner, Job, count(Company) NoOfCompanies
FROM companies
WHERE Job='CEO'
GROUP BY Owner,Job;
注意:对 Owner 和 Job 进行了分组,期望除“CEO”外还有其他值