Задать вопрос
@SvizzZzy

Как посчитать несколько count() в секции select используя обозначения через as?

Всем привет.
К примеру я хочу подсчитать проценты выбранных полей через count(), но sql ругается на то что count_id1 и count_id2 неизвестны, хотя я их обозначаю через as count_id1 и as count_id2

select  
 ...
count(table.id1) as count_id1,
count(table.id2) as count_id2,
round(sum(count_id1) /  sum(count_id2)  * 100, 1) as percent

from table
...
  • Вопрос задан
  • 741 просмотр
Подписаться 2 Средний Комментировать
Решения вопроса 2
@mletov
SELECT t1.*,
             round(sum(count_id1) /  sum(count_id2)  * 100, 1) as percent
FROM
(
select  
 ...
count(table.id1) as count_id1,
count(table.id2) as count_id2

from table
...
) AS t1
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Поля count_id1 и count_id2 видны снаружи select, а внутри нет.
Например, если этот select завернете как вложенный запрос, то в верхнем select уже можно обращаться по этим именам:
select round(sum(count_id1) /  sum(count_id2)  * 100, 1) as percent
from (
select  
 ...
count(table.id1) as count_id1,
count(table.id2) as count_id2,

from table
...
)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MrSalivan
@MrSalivan
.Net/C# Developer Odessa
Вы не можете обратиться к этим числам, т.к. вы присваиваете имя результирующему столбцу, а не создаете переменную.
...
count(table.id1) as count_id1,
count(table.id2) as count_id2,
...

Вот рабочий вариант запроса:
SELECT round((SELECT COUNT(table.id1) FROM table) /  (SELECT COUNT(table.id2) FROM table)  * 100, 1) as percent
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы