[解決済み] ヒストグラムプロットのためのデータ取得
質問
MySQL で bin のサイズを指定する方法はありますか?今、私は以下のSQLクエリを試しています。
select total, count(total) from faults GROUP BY total;
生成されるデータは十分に良いものですが、行数が多すぎます。必要なのは、データをあらかじめ定義されたビンにグループ化する方法です。スクリプト言語からこれを行うことができますが、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 |
------------------------------
ストレートな方法では実現できないのでしょうが、関連するストアドプロシージャへの参照でも良いでしょう。
どのように解決するのですか?
これは、数値のヒストグラムを作成するための超簡単な方法についての記事です。 を作成する超簡単な方法についての記事です。
ヒストグラムを作成する方法には、CASE 文やその他の複雑なロジックを使用する、より優れた、より柔軟な方法が他にも複数あります。
CASE ステートメントやその他の複雑なロジックを使用した、より優れた柔軟なヒストグラムの作成方法もあります。
この方法は、各使用例に合わせて変更するのが非常に簡単であり、短くて簡潔であるため、何度も繰り返し使用されます。 というのも、この方法は非常に簡単で、各ユースケースに合わせて変更することができ、また、非常に短く簡潔だからです。このように です。
SELECT ROUND(numeric_value, -2) AS bucket, COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar FROM my_table GROUP BY bucket;
numeric_valueを任意のカラムに変更し、丸め増分を変更するだけです。 丸め増分を変更するだけです。棒グラフは対数スケールで表示されるようにしました。 対数スケールで表示されるようにしました。 棒グラフは対数スケールにしています。
numeric_valueは、最初のバケットが次のバケットと同じ数の要素を含むようにするため、丸め増分に基づき、ROUND処理でオフセットされる必要があります。
例えば、ROUND(numeric_value,-1) を使用すると、numeric_value が ROUND(numeric_value - 5, -1) によって適切にオフセットされていなければ、範囲 [0,4] (5 elements) の numeric_value は最初のバケットに、 [5,14] (10 elements) は2番目、 [15,24] は3番目に置かれることになります。
これは、いくつかのランダムなデータに対するこのようなクエリの例で、とても素敵に見えます。
+--------+----------+-----------------+ | 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
関連
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
MySQLのNULLについて解説した記事
-
MySQLインデックスベースストレステストの実装
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] gnuplot を使ったヒストグラムは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlにおけるvarcharの日付比較とソートの実装
-
MySQLのNULLについて解説した記事
-
MySQLで正規表現を使う 詳細
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
Mysqlデータベースへのリンク時にpymysqlがConnection refusedエラーを報告する
-
PostMan レポート エラー: 接続 ECONNREFUSED 127.0.0.1:port number