首页 > 解决方案 > SQL:如何按计数除列?

问题描述

所以我有这个查询

SELECT distinct toner.device_id, printer.paper_count from toner 
join printer on printer.device_id = toner.device_id;

这将打印类似

设备ID 纸张数
1 5000
2 10000

我还有另一个查询,它将返回根据某个日期更改碳粉的次数。我用count来计算它被改变的次数。

select device_id, count(toner_color) as 'Change Count' from toner where 
toner_color = 'Black' group by device_id;

这将打印类似

设备ID 更改计数
1 2
2 2

我想要得到的是 1 个墨水罐打印的平均纸张数量,例如 5000 张纸/2 个黑色墨水罐 = 2500。

所以我想得到这样的东西

设备ID 纸张数 更改计数 平均
1 5000 2 2500
2 10000 2 5000

标签: mysqlsqljoincount

解决方案


group by p.device_id, p.paper_count,同时过滤where toner_color = 'Black'

select p.device_id, p.paper_count, count(toner_color) as 'Change Count'
    , round(p.paper_count / count(toner_color)) as 'Average'
from toner t join printer p on p.device_id = t.device_id
where toner_color = 'Black'
group by p.device_id, p.paper_count;

DB Fiddle上的 MySQL v.8.0


推荐阅读