我正在try 计算当值为空时行事件的百分比.我有一个有2行的表(ZIP_CODE、EVENTS).

TABLE weather
  events TEXT
  zip_code INTEGER

这是我写的查询.我只是获取每个邮政编码为空的所有事件的计数:

SELECT zip_code, COUNT(*) AS percentage
FROM weather
WHERE events IS NULL
GROUP BY zip_code, events;

以下是我的输出:

zip_code percentage
94041        639
94063        639
94107        574
94301        653
95113        638

我想将它转换为百分比,但我不知道如何获得事件总数,所以我可以执行类似这样的计数(为空的事件)*100/count(All).

推荐答案

对布尔表达式events IS NULL使用聚合函数AVG(),该表达式的计算结果为false0,true1:

SELECT zip_code, 
       AVG(events IS NULL) * 100 AS percentage
FROM weather
GROUP BY zip_code;

See a simplified demo.

Mysql相关问答推荐

括号在SQL查询中的作用?

SQL条件 Select 和条件WHERE

如何在产品查询中插入GROUP_CONCAT?

为分组记录MySQL取取值为TRUE的单行

S在我的SQL代码中的外键出了什么问题?

版本升级到5.0.0后在QueryDSL中使用Enum时出错

如何合并有多行的json列

仅当 SELECT 语句在 MySQL 中给出空集时才执行 UPDATE 语句

Mysql如何分行分词

在 MySQL 中跨日期和位置计算和排序实体的共现

如何在 MySQL 中使用从 SELECT IF 返回的布尔值

Mysql,显示谁已经和没有 Select 退出巴士服务

如何根据 R 中的价格范围将数据从一列复制到新列?

MySQL:从 n 个关系表中 Select 所有具有 MAX() 值的行

MYSQL:如何根据之前的相关记录获取记录

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

Over() 函数不覆盖表中的所有行

自动登录 phpMyAdmin

计算执行的查询数

由于在 MySQL 中使用保留字作为表名或列名导致的语法错误