gpt4 book ai didi

mysql - 比较MySQL同一列的计数以获得百分比

转载 作者:行者123 更新时间:2023-11-29 10:16:02 24 4
gpt4 key购买 nike

我需要做的是:

获取此计划中问题 1 的答案大于 3 的所有类(class)调查的百分比。

我有一个表格,其中包含大量的类调查数据集。问题是,例如,GENE01 可能有 5 名不同学生对其进行的 5 项调查;所以我有 4 个类(class),但有 50 个与之相关的调查。

目前,我正在运行两个查询来完成此任务,但我希望它是一个查询。这是我想要合并的两个查询。

-- Query 1
SELECT COUNT(survey_ID) as total
FROM survey_Table
WHERE courseName LIKE 'GENE01'
OR courseName LIKE 'GENE02'
OR courseName LIKE 'GENE03'
OR courseName LIKE 'GENE04'
GROUP BY survey_ID WITH ROLLUP
;
-- Query 2
SELECT COUNT (survey_ID) as newTotal
FORM survey_Table
WHERE courseName LIKE 'GENE01' AND question1 > 3
OR courseName LIKE 'GENE02' AND question1 > 3
OR courseName LIKE 'GENE03' AND question1 > 3
OR courseName LIKE 'GENE04' AND question1 > 3
GROUP BY survey_ID WITH ROLLUP
;

然后我手动从办公 table 上拿出计算器并执行 newTotal/Total * 100。我无法弄清楚子查询(或您需要执行的任何操作)来完成这个简单的任务。我想我遇到的问题是我不知道如何比较同一列的计数。

谢谢大家,抱歉我对 MySQL 还很陌生。

最佳答案

条件聚合是一种可能的方法:

 SELECT s.survey_ID
, SUM(1) AS total
, SUM(s.question1 > 3) AS newTotal
FROM survey_Table s
WHERE s.courseName IN ('GENE01','GENE02','GENE03','GENE04')
GROUP
BY s.survey_ID
WITH ROLLUP

注意条件s.question1 > 3是MySQL的简写。 MySQL 对此进行评估,如果为 TRUE,则返回 1;如果为 FALSE,则返回 0;如果为 null,则返回 NULL。

这几乎等同于更便携的 ANSI 标准兼容:

 SUM(CASE WHEN s.question1 > 3 THEN 1 ELSE 0 END)   AS newTotal

区别在于 NULL 值的处理。

更精确地重写 SUM(s.question1 > 3)

 SUM(CASE WHEN s.question1 > 3 THEN 1 WHEN s.question1 IS NULL THEN NULL ELSE 0 END)

对于返回的每一行,都会计算 SUM() 聚合内的表达式。 1 始终计算为 1

请随意从选择列表中省略survey_ID。通常,当我们执行 GROUP BY foo 时,我们感兴趣的是哪个结果行与哪个 foo 关联。

<小时/>

该问题询问有关获得“百分比”的问题。我们可以对 SELECT 列表中的表达式进行除法。但我认为“with rollup”不会让您得到您所期望的东西。

这是一个例子:

 SELECT SUM(1)                AS total
, SUM(s.question1 > 3) AS newTotal

, 100.0
* SUM(s.question1 > 3)
/ SUM(1) AS percentage

FROM survey_Table s
WHERE s.courseName IN ('GENE01','GENE02','GENE03','GENE04')

在此示例中,我选择省略 GROUP BY 子句。因此,这将返回一个总体总行,这将为我们提供总体百分比。 (如果我们使用 GROUP BYWITH ROLLUP,百分比就会被添加。这可能不是我们想要的结果。)

关于mysql - 比较MySQL同一列的计数以获得百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50106480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com