复杂 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
查询:
SELECT Owner, Job, count(Company) NoOfCompanies
FROM companies
WHERE Job='CEO'
GROUP BY Owner,Job;
注意:根据 Owner 和 Job 完成的分组期望您有其他值以及 'CEO'
我有 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
查询:
SELECT Owner, Job, count(Company) NoOfCompanies
FROM companies
WHERE Job='CEO'
GROUP BY Owner,Job;
注意:根据 Owner 和 Job 完成的分组期望您有其他值以及 'CEO'