计算每个部门的所有连接用户
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_1
在 Cashier
下并且它是 Connected
它应该在 service_name Cashier
中输出 active_teller
是 1
我遇到问题的部分代码是这样的
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
似乎适合我的情况。
我有这个 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_1
在 Cashier
下并且它是 Connected
它应该在 service_name Cashier
中输出 active_teller
是 1
我遇到问题的部分代码是这样的
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
似乎适合我的情况。