有没有一种方法可以指定MySQL中的bin大小?现在,我正在尝试以下SQL查询:
select total, count(total) from faults GROUP BY total;
生成的数据足够好,但是行太多。我需要的是一种将数据分组到预定义的bin中的方法。我可以从脚本语言执行此操作,但是有没有办法直接在SQL中执行此操作?
例:
+-------+--------------+
| total | count(total) |
+-------+--------------+
| 30 | 1 |
| 31 | 2 |
| 33 | 1 |
| 34 | 3 |
| 35 | 2 |
| 36 | 6 |
| 37 | 3 |
| 38 | 2 |
| 41 | 1 |
| 42 | 5 |
| 43 | 1 |
| 44 | 7 |
| 45 | 4 |
| 46 | 3 |
| 47 | 2 |
| 49 | 3 |
| 50 | 2 |
| 51 | 3 |
| 52 | 4 |
| 53 | 2 |
| 54 | 1 |
| 55 | 3 |
| 56 | 4 |
| 57 | 4 |
| 58 | 2 |
| 59 | 2 |
| 60 | 4 |
| 61 | 1 |
| 63 | 2 |
| 64 | 5 |
| 65 | 2 |
| 66 | 3 |
| 67 | 5 |
| 68 | 5 |
------------------------
我在寻找什么:
+------------+---------------+
| total | count(total) |
+------------+---------------+
| 30 - 40 | 23 |
| 40 - 50 | 15 |
| 50 - 60 | 51 |
| 60 - 70 | 45 |
------------------------------
我猜想这不能直接实现,但是对任何相关存储过程的引用也可以。
这是一篇有关在MySQL中为数值创建直方图的超级快捷方法的文章。
使用CASE语句和其他类型的复杂逻辑,还有多种其他方法可以创建更好,更灵活的直方图。这种方法一次又一次地赢得了我的青睐,因为它很容易针对每个用例进行修改,而且简洁明了。这是您的操作方式:
SELECT ROUND(numeric_value, -2) AS bucket, COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar FROM my_table GROUP 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
我使用matplotlib在python中绘制直方图,方法是: 是否可以打印包含所有存储箱信息的数据框,如每个存储箱中的元素数量?
问题内容: 我想从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过HotSpot诊断Bean触发二进制堆转储,但是我看不到如何获取直方图数据。可能吗 ? 问题答案: 这可能是不是最好的例子/代码,但看看这个 (我认为这仅适用于Hotspot JVM)
我有时需要以直方图的形式显示图像数据的表示。我对访问图像数据的方法特别感兴趣。我熟悉,其中包括直方图支持,但我会考虑其他方法。
我正在使用以下代码获取垂直图像并向其添加类,但我不知道为什么,它不起作用: 我的测试页
问题内容: 有时我需要以直方图的形式显示图像数据的表示形式。我对访问图像数据的方式特别感兴趣。我熟悉,其中包括直方图支持,但我会考虑其他方法。 问题答案: 下面的示例使用多种技术来创建任意图像的RGB直方图: 该方法从中提取每个色带的值BufferedImage。 该方法将每个频段的计数添加到。 一个替换默认,如图所示这里。 定制提供每个系列所需的颜色;它包含半透明的颜色。 一种变型,讨论在这里,
$config = ['path' => './tests']; $fileObject = new \Vtiful\Kernel\Excel($config); $fileObject = $fileObject->fileName('tutorial.xlsx'); $fileHandle = $fileObject->getHandle(); $chart = new \Vtif