计算每个部门的所有连接用户

Count all connected users on every department

我有这个 tellers 可以认为是每个 service departments

上的 users

我有这段代码可以输出我想要的,除了 active_tellers 字段。

SELECT service_info.name AS service_name, 
service_info.current_serving AS current_service, 
service_info.last_printed AS last_printed, 
service_info.remaining_queue AS remaining_queue, 
AVG(teller_log.duration), 
service_info.active_tellers AS active_teller 
FROM user_info 
JOIN teller_info 
ON user_info.teller_id = teller_info.teller_id 
JOIN service_info 
ON service_info.service_id = teller_info.service_id 
JOIN teller_log 
ON user_info.user_id = teller_log.user_id 
GROUP BY 
service_info.name

它输出这个

这是我的完整数据库架构

正如您在我的 teller_info table 中的数据库模式中看到的那样,我有字段 status 并且它是 ENUM [Connected, Disconnected] 这是我要获取的字段,如果 teller_1Cashier 下并且它是 Connected 它应该在 service_name Cashier 中输出 active_teller1

我遇到问题的部分代码是这样的

service_info.active_tellers AS active_teller 

我试过了

(SELECT COUNT(teller_info.teller_id) FROM teller_info WHERE status = "Connected") as a

但是输出不正确

编辑:

的输出
show create table service_info

CREATE TABLE `service_info` (
  `service_id` int(11) NOT NULL AUTO_INCREMENT,
  `service_num` int(2) unsigned zerofill NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `starting_num` int(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `ending_num` int(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `current_serving` int(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `last_printed` int(4) unsigned zerofill NOT NULL DEFAULT '0000',
  `remaining_queue` int(10) NOT NULL DEFAULT '0',
  `active_tellers` int(5) NOT NULL DEFAULT '0',
  PRIMARY KEY (`service_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COMMENT='Table for service (Cashier, information, repair)'

尝试计算服务中连接的出纳员

SUM(IF(teller_info.status = 'Connected', 1, 0)) AS active_tellers 
(SELECT COUNT(*) FROM teller_info WHERE teller_info.`status` = "Connected" AND teller_info.service_id = service_info.service_id) AS active_teller

似乎适合我的情况。