Mysql对不同的表使用不同的计数。在1个查询中可能吗?
MySql生产服务器版本:5.7.14-google-log谷歌 我可以在Mysql版本8上进行测试 我有这些桌子: 网络管理系统警报id、用户id nms\u警报\u不参加nms\u警报\u id,不参加\u id nms\u员工\u日志开始、结束、区域\u id 我想要一些类似于:Mysql对不同的表使用不同的计数。在1个查询中可能吗?,mysql,sql,count,mysql-5.7,Mysql,Sql,Count,Mysql 5.7,MySql生产服务器版本:5.7.14-google-log谷歌 我可以在Mysql版本8上进行测试 我有这些桌子: 网络管理系统警报id、用户id nms\u警报\u不参加nms\u警报\u id,不参加\u id nms\u员工\u日志开始、结束、区域\u id 我想要一些类似于: SELECT DISTINCT # COUNT(accept),<-- How to find this? # COUNT(reject),<-- How to find this?
SELECT DISTINCT
# COUNT(accept),<-- How to find this?
# COUNT(reject),<-- How to find this?
nms_employee_log.id as idLog,
nms_employee_log.begin as employeeBegin,
nms_employee_log.end as employeeEnd,
nms_employee_log.zone_id
FROM nms_employee_log where employee_id= 11
(GROUP BY idLog)
====
实现这一点的最佳查询是什么
最好的性能是什么?从最初的问题猜测,如果您使用的是MySQL 8+或subselect And CASE SUM,那么使用CTE应该是可行的
请告诉我们您期望的结果。@GMB清楚吗?不清楚。您的结果似乎与示例数据不匹配。还有xs,您应该在其中显示预期的实际值。请参阅:-并说明您使用的MySQL版本您可以使用窗口函数将这些总和与其余列混合。它们在MySQL 8.x中可用,但在MySQL 5.x中不可用。您使用的是哪个版本的MySQL?它给出了以下错误:无法识别的语句类型。在位置0附近,我是否必须在MySql中执行某些操作才能接受?@inêsGomes您使用的是哪个版本的MySql?子选择也应该有效。谢谢@wp78de。现在没有给出错误,但是没有给出我期望的结果。我重做了这个问题,也许现在更清楚了?
SELECT DISTINCT
nms_alert.id as accept,
nms_employee_log.id as idLog,
nms_alert.alert_begin as dataAlert,
nms_employee_log.begin as employeeBegin,
nms_employee_log.end as employeeEnd,
nms_employee_log.zone_id
FROM `nms_alert`
INNER JOIN nms_employee_log on ( nms_employee_log.begin <= alert_begin AND nms_employee_log.end >= alert_begin )
WHERE nms_employee_log.employee_id= 11 AND INSTR( nms_alert.sent_to_zones , nms_employee_log.zone_id )
AND nms_alert.user_attended_id=3
ORDER BY nms_employee_log.id DESC
accept idLog employeeBegin employeeEnd zone_id
64077 805 2019-12-16 15:10:04 2019-12-17 19:32:24 25
64077 766 2019-12-16 15:10:04 2019-12-16 16:16:07 25
62202 712 2019-12-13 20:18:28 2019-12-13 20:47:04 25
62202 709 2019-12-13 20:18:28 2019-12-13 20:46:41 25
55526 530 2019-12-03 16:13:43 2019-12-03 19:40:59 25
53800 427 2019-11-28 15:08:00 2019-11-29 14:28:07 24
53800 426 2019-11-28 15:08:00 2019-11-29 14:28:07 26
53824 425 2019-11-28 15:08:00 2019-11-29 14:28:07 25
53800 425 2019-11-28 15:08:00 2019-11-29 14:28:07 25
53579 389 2019-11-27 07:42:24 2019-11-27 14:09:45 24
53437 386 2019-11-26 15:17:04 2019-11-27 07:48:32 25
52570 332 2019-11-22 19:15:54 2019-11-23 10:23:52 25
52596 332 2019-11-22 19:15:54 2019-11-23 10:23:52 25
52535 328 2019-11-22 13:33:31 2019-11-22 21:18:04 25
52538 328 2019-11-22 13:33:31 2019-11-22 21:18:04 25
52570 328 2019-11-22 13:33:31 2019-11-22 21:18:04 25
52515 327 2019-11-22 13:33:31 2019-11-22 21:18:04 24
52515 323 2019-11-22 13:33:31 2019-11-22 16:04:56 24
52399 306 2019-11-21 12:20:01 2019-11-22 08:14:38 25
52328 306 2019-11-21 12:20:01 2019-11-22 08:14:38 25
52337 306 2019-11-21 12:20:01 2019-11-22 08:14:38 25
52396 306 2019-11-21 12:20:01 2019-11-22 08:14:38 25
52328 305 2019-11-21 12:20:01 2019-11-22 08:14:38 26
52399 305 2019-11-21 12:20:01 2019-11-22 08:14:38 26
52328 304 2019-11-21 12:20:01 2019-11-22 08:14:38 27
SELECT DISTINCT
nms_alert.id as reject, #<-- Count Rejected
nms_employee_log.id as idLog,
nms_alert.alert_begin as dataAlert,
nms_employee_log.begin as employeeBegin,
nms_employee_log.end as employeeEnd,
nms_employee_log.zone_id
FROM `nms_alert`
INNER JOIN nms_alert_not_attend on nms_alert.id = nms_alert_not_attend.nms_alert_id
INNER JOIN nms_employee_log on ( nms_employee_log.begin <= alert_begin AND nms_employee_log.end >= alert_begin )
WHERE nms_employee_log.employee_id= 11 AND INSTR( nms_alert.sent_to_zones , nms_employee_log.zone_id )
AND nms_alert_not_attend.not_attend_id = 3
ORDER BY nms_employee_log.id DESC
reject idLog employeeBegin employeeEnd zone_id
64757 803 2019-12-16 20:05:07 2019-12-17 19:30:29 27
64089 784 2019-12-16 16:16:35 2019-12-16 19:23:44 27
64187 784 2019-12-16 16:16:35 2019-12-16 19:23:44 27
64092 783 2019-12-16 16:16:35 2019-12-16 19:23:44 25
64175 783 2019-12-16 16:16:35 2019-12-16 19:23:44 25
64177 783 2019-12-16 16:16:35 2019-12-16 19:23:44 25
64181 783 2019-12-16 16:16:35 2019-12-16 19:23:44 25
64089 780 2019-12-16 16:16:35 2019-12-16 19:16:12 27
64092 778 2019-12-16 16:16:35 2019-12-16 19:16:12 25
64175 778 2019-12-16 16:16:35 2019-12-16 19:16:12 25
64177 778 2019-12-16 16:16:35 2019-12-16 19:16:12 25
64181 778 2019-12-16 16:16:35 2019-12-16 19:16:12 25
64083 768 2019-12-16 15:10:04 2019-12-16 16:16:07 27
64012 761 2019-12-16 13:20:13 2019-12-16 14:32:38 25
64010 756 2019-12-16 12:59:37 2019-12-16 13:20:06 25
62262 728 2019-12-13 21:44:54 2019-12-13 21:57:14 25
62223 723 2019-12-13 20:50:27 2019-12-13 21:44:32 25
62227 723 2019-12-13 20:50:27 2019-12-13 21:44:32 25
62223 720 2019-12-13 20:50:27 2019-12-13 21:26:39 25
62227 720 2019-12-13 20:50:27 2019-12-13 21:26:39 25
62202 712 2019-12-13 20:18:28 2019-12-13 20:47:04 25
62202 709 2019-12-13 20:18:28 2019-12-13 20:46:41 25
56664 631 2019-12-05 10:45:09 2019-12-07 22:03:28 26
56657 630 2019-12-05 10:45:09 2019-12-07 22:03:28 25
56661 630 2019-12-05 10:45:09 2019-12-07 22:03:28 25
accept reject idLog employeeBegin employeeEnd zone_id
1 0 805 2019-12-16 15:10:04 2019-12-17 19:32:24 25
0 1 803 2019-12-16 20:05:07 2019-12-17 19:30:29 27
0 2 784 2019-12-16 16:16:35 2019-12-16 19:23:44 27
0 4 783 2019-12-16 16:16:35 2019-12-16 19:23:44 25
0 1 780 2019-12-16 16:16:35 2019-12-16 19:16:12 27
0 4 778 2019-12-16 16:16:35 2019-12-16 19:16:12 25
0 1 768 2019-12-16 15:10:04 2019-12-16 16:16:07 27
1 0 766 2019-12-16 15:10:04 2019-12-16 16:16:07 25
0 1 761 2019-12-16 13:20:13 2019-12-16 14:32:38 25
0 0 760 2019-12-16 13:20:13 2019-12-16 14:32:38 26
0 0 758 2019-12-16 12:59:37 2019-12-16 13:20:06 27
0 0 757 2019-12-16 12:59:37 2019-12-16 13:20:06 28
0 1 756 2019-12-16 12:59:37 2019-12-16 13:20:06 25
0 0 755 2019-12-16 12:59:37 2019-12-16 13:20:06 26
0 0 754 2019-12-13 21:57:22 2019-12-16 12:57:30 27
0 0 753 2019-12-13 21:57:22 2019-12-16 12:57:30 28
0 0 752 2019-12-13 21:57:22 2019-12-16 12:57:30 21
0 0 751 2019-12-13 21:57:22 2019-12-16 12:57:30 22
0 0 730 2019-12-13 21:44:54 2019-12-13 21:57:14 23
0 0 729 2019-12-13 21:44:54 2019-12-13 21:57:14 24
0 1 728 2019-12-13 21:44:54 2019-12-13 21:57:14 25
0 0 727 2019-12-13 21:44:54 2019-12-13 21:57:14 26
0 0 726 2019-12-13 20:50:27 2019-12-13 21:44:32 27
0 0 725 2019-12-13 20:50:27 2019-12-13 21:44:32 23
0 0 724 2019-12-13 20:50:27 2019-12-13 21:44:32 24
0 2 723 2019-12-13 20:50:27 2019-12-13 21:44:32 25
0 0 722 2019-12-13 20:50:27 2019-12-13 21:26:39 26
0 0 721 2019-12-13 20:50:27 2019-12-13 21:26:39 27
0 2 720 2019-12-13 20:50:27 2019-12-13 21:26:39 25
0 0 719 2019-12-13 20:50:27 2019-12-13 21:26:39 26
0 0 718 2019-12-13 20:47:23 2019-12-13 20:50:01 27
0 0 717 2019-12-13 20:47:23 2019-12-13 20:50:01 28
0 0 716 2019-12-13 20:47:23 2019-12-13 20:50:01 21
0 0 715 2019-12-13 20:47:23 2019-12-13 20:50:01 22
0 0 714 2019-12-13 20:18:28 2019-12-13 20:47:04 23
0 0 713 2019-12-13 20:18:28 2019-12-13 20:47:04 24
1 1 712 2019-12-13 20:18:28 2019-12-13 20:47:04 25
0 0 711 2019-12-13 20:18:28 2019-12-13 20:47:04 26
0 0 710 2019-12-13 20:18:28 2019-12-13 20:46:42 27
1 1 709 2019-12-13 20:18:28 2019-12-13 20:46:41 25
0 0 708 2019-12-13 20:18:28 2019-12-13 20:46:41 25
0 0 707 2019-12-13 20:18:28 2019-12-13 20:46:42 27
0 0 706 2019-12-13 19:06:04 2019-12-13 20:18:06 27
0 0 705 2019-12-13 19:06:04 2019-12-13 20:18:06 25
0 0 704 2019-12-13 19:06:04 2019-12-13 20:18:06 27
0 0 703 2019-12-13 19:06:04 2019-12-13 20:18:06 25
0 0 702 2019-12-13 14:22:59 2019-12-13 19:05:43 27
0 0 701 2019-12-13 14:22:59 2019-12-13 19:05:43 25
0 0 700 2019-12-13 14:22:59 2019-12-13 19:05:43 25
0 0 699 2019-12-13 14:22:59 2019-12-13 19:05:43 26
0 0 698 2019-12-12 14:43:13 2019-12-13 14:22:36 27
0 0 697 2019-12-12 14:43:13 2019-12-13 14:22:36 25
0 0 696 2019-12-12 14:43:13 2019-12-13 14:22:36 27
0 0 695 2019-12-12 14:43:13 2019-12-13 14:22:36 27
0 0 694 2019-12-12 14:11:20 2019-12-12 14:42:27 25
0 0 693 2019-12-12 14:11:20 2019-12-12 14:42:27 27
0 0 692 2019-12-12 14:11:20 2019-12-12 14:42:27 25
0 0 691 2019-12-12 14:11:20 2019-12-12 14:42:27 27
0 0 690 2019-12-12 14:08:50 2019-12-12 14:10:54 25
0 1 631 2019-12-05 10:45:09 2019-12-07 22:03:28 26
0 2 630 2019-12-05 10:45:09 2019-12-07 22:03:28 26
1 0 530 2019-12-03 16:13:43 2019-12-03 19:40:59 26
1 0 427 2019-11-28 15:08:00 2019-11-29 14:28:07 24
1 0 426 2019-11-28 15:08:00 2019-11-29 14:28:07 26
2 0 425 2019-11-28 15:08:00 2019-11-29 14:28:07 25
1 0 389 2019-11-27 07:42:24 2019-11-27 14:09:45 24
1 0 386 2019-11-26 15:17:04 2019-11-27 07:48:32 25
2 0 332 2019-11-22 19:15:54 2019-11-23 10:23:52 25
3 0 328 2019-11-22 13:33:31 2019-11-22 21:18:04 25
1 0 327 2019-11-22 13:33:31 2019-11-22 21:18:04 24
1 0 323 2019-11-22 13:33:31 2019-11-22 16:04:56 24
4 0 306 2019-11-21 12:20:01 2019-11-22 08:14:38 25
2 0 305 2019-11-21 12:20:01 2019-11-22 08:14:38 26
0 1 304 2019-11-21 12:20:01 2019-11-22 08:14:38 27
SELECT
SUM(case when accept is not null then 1 else 0 end) as countAccept
,SUM(case when reject is not null then 1 else 0 end) as countReject
FROM (
SELECT DISTINCT
nms_alert.id as accept,
nms_alert_not_attend.nms_alert_id as reject,
nms_alert.alert_begin,
nms_employee_log.zone_id,
nms_employee_log.device_type,
nms_employee_log.model,
nms_employee_log.wifi_network
FROM `nms_alert`
INNER JOIN nms_alert_not_attend on nms_alert.id = nms_alert_not_attend.nms_alert_id
INNER JOIN nms_employee_log on ( nms_employee_log.begin <= alert_begin AND nms_employee_log.end >= alert_begin )
WHERE nms_alert_not_attend.not_attend_id = 3
AND nms_alert.user_attended_id=3
AND nms_employee_log.employee_id= 11
) s