栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取直方图的数据

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取直方图的数据

这是一篇有关在MySQL中为数值创建直方图的超级快捷方法的文章。

使用CASE语句和其他类型的复杂逻辑,还有多种其他方法可以创建更好,更灵活的直方图。这种方法一次又一次地赢得了我的青睐,因为它很容易针对每个用例进行修改,而且简洁明了。这是您的操作方式:

SELECt ROUND(numeric_value, -2)    AS bucket,       COUNT(*)         AS COUNT,       RPAD('', LN(COUNT(*)), '*') AS barFROM   my_tableGROUP  BY bucket;

只需将numeric_value更改为您的列,更改舍入增量就可以了。我已经将条形图设为对数刻度,这样当您具有较大的值时,它们就不会增长太多。

为了确保第一个存储桶包含的元素与后续存储桶一样多,应在ROUNDing操作中根据舍入增量对numeric_value进行偏移。

例如,对于ROUND(numeric_value,-1),范围[0,4](5个元素)中的numeric_value将放置在第一个存储桶中,而[5,14](10个元素)在第二个存储桶中,[15,24]在第三个存储桶中,除非numeric_value通过ROUND(numeric_value-5,-1)适当偏移。

这是对一些看起来很漂亮的随机数据进行这种查询的示例。足够用于快速评估数据。

+--------+----------+-----------------+| bucket | count    | bar  |+--------+----------+-----------------+|   -500 |        1 |      ||   -400 |        2 | *    ||   -300 |        2 | *    ||   -200 |        9 | **   ||   -100 |       52 | **** ||      0 |  5310766 | *************** ||    100 |    20779 | **********      ||    200 |     1865 | ********        ||    300 |      527 | ******          ||    400 |      170 | *****||    500 |       79 | **** ||    600 |       63 | **** ||    700 |       35 | **** ||    800 |       14 | ***  ||    900 |       15 | ***  ||   1000 |        6 | **   ||   1100 |        7 | **   ||   1200 |        8 | **   ||   1300 |        5 | **   ||   1400 |        2 | *    ||   1500 |        4 | *    |+--------+----------+-----------------+

一些注意事项:不匹配的范围不会出现在计数中-计数列中不会有零。另外,我在这里使用ROUND函数。如果您觉得更有意义,也可以用TRUNCATE轻松替换它。

我在这里找到它http://blog.shlomoid.com/2011/08/how-to-quickly-create-histogram-
in.html



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号