Проблемы с групповой функцией
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 недели назад
добавить комментарий
пожаловаться
Решение
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 недели назад
добавить комментарий
пожаловаться
Ваш ответ