【问题标题】:How to sum all count(case) subcolumns?如何汇总所有计数(案例)子列?
【发布时间】:2019-08-18 22:16:52
【问题描述】:

我正在创建一个表格,该表格可以计算三列中的所有“异常”数据并将这些列相加为总数。

SELECT

  COUNT(CASE WHEN p_eyes <> 'Normal' THEN 1 END) AS 'abnormalEyes',
  COUNT(CASE WHEN p_ears <> 'Normal' THEN 1 END) AS 'abnormalEars',
  COUNT(CASE WHEN p_nose <> 'Normal' THEN 1 END) AS 'abnormalNose'

FROM student_physical_record_exam_grade_eleven;

这将计算这三列中的所有非“正常”。

有什么方法可以将这三列合计为“眼睛/耳朵/鼻子”?

【问题讨论】:

  • 考虑在应用程序代码中处理数据显示的问题——尽管从本质上讲,我怀疑这个问题源于设计不佳的表格
  • 您可以使用子查询。从(您的查询)中选择异常眼睛+异常耳朵+异常鼻子作为“眼睛/耳朵/鼻子”;

标签: mysql sql select phpmyadmin xampp


【解决方案1】:

如果您只想对这些结果求和,可以将它们相加。最简单的方法是使用子查询:

SELECT *, abnormalEyes + abnormalEars + abnormalNose AS totalAbnormal
FROM   (SELECT COUNT(CASE WHEN p_eyes <> 'Normal' THEN 1 END) AS abnormalEyes,
               COUNT(CASE WHEN p_ears <> 'Normal' THEN 1 END) AS abnormalEars,
               COUNT(CASE WHEN p_nose <> 'Normal' THEN 1 END) AS abnormalNose
FROM   student_physical_record_exam_grade_eleven) t

【讨论】:

  • 我能问一下那个“t”是什么意思吗?
  • @JinAnonuevo 在 MySQL 中的每个表表达式(在本例中为子查询)都必须有一个名称。由于在这种情况下我们并不真正关心子查询的名称(即,我们不会在任何地方使用它),我只使用了t(“table”的缩写)。但你可以使用任何你喜欢的描述性名称。
猜你喜欢
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2019-02-16
  • 2017-09-03
  • 2022-11-22
  • 2019-06-04
相关资源
最近更新 更多