gpt4 book ai didi

MySQL查询获取列的模态平均值?

转载 作者:行者123 更新时间:2023-11-29 14:51:55 28 4
gpt4 key购买 nike

我一直在记录我的控制面板的用户的窗口高度。

我有一个像这样的表:

user_id(INT) | window_height(INT)
--------------------------------
123 | 1200
124 | 1200
125 | 1100
126 | 1200

我有数千行,想获得模态平均值。

ie 1200px = 300users, 1100px = 125users, 500px = 12users

我正在寻找一个 MySQL 查询,我可以直接进入 PhpMyAdmin...

最佳答案

获取原始计数

select window_height, count(*) totalusers
from tbl
group by window_height
order by totalusers desc # or by window_height

获取模态平均值(如果最高计数存在平局,这将显示多个值)

select window_height, totalusers
from (
select @r := if(totalusers>@r,totalusers,@r) maxcount, window_height, totalusers
from (select @r:=0) initvars, (
select window_height, count(*) totalusers
from tbl
group by window_height
) X ) Y
where totalusers = @r

这使用了 MySQL 技巧,即使用变量来存储通过聚合子查询时的最大计数。操作总结

  • O(n):扫描一次表并构建计数 (T1)
  • O(n):扫描派生表 T1 并将最高计数保留在变量 @r (T2) 中
  • O(n):扫描派生表 T2 并仅筛选计数最高的高度

关于MySQL查询获取列的模态平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564106/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com