mysql - 如何比较列并在表中计数
问题描述
我正在使用mysql。我需要比较表中的列
我使用 MySQL 8.0 并且只有一个数据库
create table A
(
serial_no varchar(10),
p01_pass_fail varchar(4),
p02_pass_fail varchar(4),
p03_pass_fail varchar(4),
p04_pass_fail varchar(4),
p05_pass_fail varchar(4)
)
如果一行是:
serial_no = 001,
p01_pass_fail = pass,
p02_pass_fail = fail,
p03_pass_fail = pass,
p04_pass_fail = pass,
p05_pass_fail = fail
我的完美结果是通过计数 = 3,失败计数 = 2
这对我来说并不容易
解决方案
您可以使用CASE ... END
to “translate”'pass'
或'fail'
to 1
or 0
and+
来总结它。
SELECT serial_no,
CASE p01_pass_fail
WHEN 'fail' THEN
0
WHEN 'pass' THEN
1
END
+
...
+
CASE p05_pass_fail
WHEN 'fail' THEN
0
WHEN 'pass' THEN
1
END pass_count,
CASE p01_pass_fail
WHEN 'pass' THEN
0
WHEN 'fail' THEN
1
END
+
...
+
CASE p05_pass_fail
WHEN 'pass' THEN
0
WHEN 'fail' THEN
1
END fail_count
FROM a;
推荐阅读
- css - 如何使具有最大宽度的水平拉伸网格项目居中
- ios - 在 Notification Service 和应用程序之间使用 iOS App Group 容器共享文件(颤振)
- php - 在 WooCommerce 中自动处理已付款订单而不是自动完成
- react-native - React Native TopTabNavigator 图标未显示
- angular - 我如何以自己的方式设计 Angular 10 Material Select(和其他)
- matrix - 如何检查矩阵中的 undef 值(在 Julia 中)并分配一个新值?
- sql - 如何在 postgres jsonb 列中搜索特定的键值?
- c - 自 1970 年 1 月 1 日以来的年、月、周、日、小时
- html - 子容器上边距拉低父上边距
- java - java.io.IOException:createNewFile() 的权限被拒绝