Как использовать один и тот же столбец для фильтрации и выполнения вычислений, таких как среднее значение, процент и т.д.

#mysql #mysql-workbench

#mysql #mysql-workbench

Вопрос:

В моей таблице есть числовой столбец с оценками. Я пытаюсь вычислить, какой процент людей из этого столбца набрал 1. Тем не менее, я, кажется, могу понять, как дважды выбрать один и тот же столбец, чтобы выполнить это простое вычисление. Я уверен, что мне не хватает чего-то очень простого?

 SELECT scores 
FROM table1
WHERE scores=1 DIV scores;
  

Ответ №1:

Вы можете выполнить условную агрегацию:

 SELECT 
  100.0 * sum(case when scores = 1 then 1 else 0 end) / count(*) percentage 
FROM table1
  

или поскольку MySQL вычисляет логические выражения как 1 для TRUE и 0 для FALSE :

 SELECT 
  100.0 * sum(scores = 1) / count(*) percentage 
FROM table1
  

или используйте avg() :

 SELECT 
  100.0 * avg(scores = 1) percentage 
FROM table1