sql - SQL 查询从 10 个布尔列计算百分比真
问题描述
我有一个名为“Grades”的表,其中包含 10 个布尔列,称为 PassA、PassB、PassC、PassD 等。我正在尝试进行查询,以提供每列中“真”的百分比?
ID PassA PassB PassC
1 x x
2 x x
3 x
4 x
预期的查询结果(或等价物):
PassA PassB PassC
50% 75% 25%
它是一个 Access SQL 语句。
我似乎可以用一列来做到这一点(见下文),但不想这样做会在 1 个查询中的所有列。所有的想法都非常受欢迎?谢谢!
SELECT PassA, (count(PassA(*)*100 / (Select count(*)FROM Grades} AS Total
FROM Grades
Group by PassA;
解决方案
使用条件聚合:
SELECT
ROUND(100.0 * AVG(IIF(PassA, 1, 0)), 2) & '%' AS PercentA,
ROUND(100.0 * AVG(IIF(PassB, 1, 0)), 2) & '%' AS PercentB,
ROUND(100.0 * AVG(IIF(PassC, 1, 0)), 2) & '%' AS PercentC
FROM Grades
对于 MS Access,这也可以:
SELECT
ROUND(100.0 * AVG(-PassA), 2) & '%' AS PercentA,
ROUND(100.0 * AVG(-PassB), 2) & '%' AS PercentB,
ROUND(100.0 * AVG(-PassC), 2) & '%' AS PercentC
FROM Grades
因为存储TRUE
为-1
和FALSE
。
结果:0
PercentA PercentB PercentC
50% 75% 25%
推荐阅读
- python - 如何计算和跟踪巨大 json 文件中的值
- c# - 如何从选择语句中分离检索到的信息
- wordpress - WPBakery Page Builder 网格生成器自定义图像字段显示 url 不是 html 图像
- python-3.x - 使用 threading.Event() 停止所有线程
- arrays - 如何在 nasm 中找到数组的最后一个 0?
- javascript - 在opencv中找到轮廓的绝对直线/矩形
- google-cloud-platform - 如何修复谷歌云大表中丢失的实例
- php - 如何使用 PHP 在第三方网站上预填充表单或将数据发送到第三方网站?
- javascript - 如何期待 Mocha 和 Chai 的投掷?
- matlab - 如何形成三角植绒阵型?