Проблемы с групповой функцией

114
3

User     Product     count    Percentage 
User1 Product1 21 38.1818
User1 Product2 34 61.8182

"Процент", упомянутый выше, был рассчитан по счету /total_count * 100. Я получил код ниже.

select user, product, count(id) as count, count(id)/55*100 from table1 where  
user=user1 group by product.

Но число 55 было жестко закодировано. Я не хочу, чтобы это было жестко закодировано. Следовательно, как я могу добиться этого. Я старался, насколько мне известно, но все-таки сработал.

спросил(а) 2021-01-19T16:18:12+03:00 2 месяца, 3 недели назад
1
Решение
87

В MySQL вы должны использовать join/коррелированный подзапрос:

select user, product, count(id) as count,
count(id) / (select count(*) from table1 tt1 where tt1.user = t1.user)
from table1 t1
where t1.user = user1
group by user, product;

В MySQL 8. 0+ вы можете просто использовать функцию окна:

select user, product, count(id) as count,
count(id) / sum(count(*)) over (partition by user)
from table1 t1
where t1.user = user1
group by user, product;

ответил(а) 2021-01-19T16:18:12+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема