[英]Mysql calculate with the max() value
我有点卡住了,因为我不确定我是否在寻找错误的方式,因为我找不到与我正在寻找的东西相关的任何东西。 所以我想举一个例子来说明我正在尝试做的事情。 注意:不是真实场景。
我有一个领域的计数:
SELECT count(user_id)
FROM usersgroups
group by user_id
现在我想用计数中的最大值进行计算。 就像是:
SELECT count(user_id) as count,
SUM(max(count(user_id)) / count(user_id)) as blub
FROM usergroups
group by user_id
但是我得到错误无效使用组函数,因为我认为我不能在 SUM 函数中使用 COUNT() 函数?
那么有没有其他方法可以进行计算。
PS calc 用于计算最大值与记录/当前值的百分比。
更新
所以我期望的是一个百分比
count | percentage
5 | 1
4 | 0.8
3 | 0.6
2 | 0.3
1 | 0.2
ORDER BY COUNT(user_id) DESC LIMIT 1
来获取相同的内容。CROSS JOIN
这个结果集与usergroups
表,这样在每一行usergroups
表访问最大计数值。GROUP BY
和适当的聚合来确定“百分比”。GROUP BY
有效, SELECT
子句必须仅包含聚合列/表达式,或GROUP BY
子句中指定的列。 这就是在最大计数值上使用MAX()
原因。 由于该值只是一个标量,因此MAX()
将仅返回相同的值。请尝试以下操作:
SELECT
ug.user_id,
COUNT(ug.user_id) AS user_count,
COUNT(ug.user_id) / MAX(mcnt.count) AS percent
FROM
usergroups AS ug
CROSS JOIN
(
SELECT COUNT(user_id) AS count
FROM usersgroups
GROUP BY user_id
ORDER BY COUNT(user_id) DESC LIMIT 1
) AS mcnt
GROUP BY ug.user_id
ORDER BY user_count DESC
将可用的 user_id 计数为子查询,然后将 user_id 值除以计数的总和。
select user_id/ sum(count) as percentage
from(
select count(user_id) as count , user_id
from usergroups
where user_id != 0
group by user_id
) as A
group by count, user_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.