запросить процент вхождений в таблице SQL - PullRequest
1 голос
/ 16 марта 2019

У меня есть таблица имен, где в каждой строке есть столбцы name и occurrences.

. Я бы хотел вычислить процентное соотношение определенного имени из таблицы.

Как я могу сделать это одним запросом?

Ответы [ 4 ]

2 голосов
/ 16 марта 2019

Вы можете получить его, используя SUM(occurrences):

select 
  name,
  100.0 * sum(occurrences) / (select sum(occurrences) from users) as percentage
from 
  users
where name = 'Bob' 
2 голосов
/ 16 марта 2019

Попробуйте это:

SELECT name, cast(sum(occurance) as float) /
(select sum(occurance) from test) * 100 percentage FROM test
where name like '%dog%'

Демо здесь

1 голос
/ 17 марта 2019

Я думаю, что условное агрегирование - лучший подход:

select sum(case when name = @name then occurrences else 0 end) / sum(occurrences) as ratio
from t;

Если вы хотите, чтобы фактический процент от 0 до 100 умножился на 100.

1 голос
/ 16 марта 2019

Это не очень элегантно из-за подзапроса в списке полей, но это сработает, если вы захотите его в одном запросе:

SELECT 
  `name`,
  (CAST(SUM(`occurance`) AS DOUBLE)/CAST((SELECT SUM(`occurance`) FROM `user`) AS DOUBLE)) as `percent`
FROM 
  `user`
WHERE
   `name`='miroslav';

Пример Fiddle

Надеюсь, это поможет,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...