SORU
19 Kasım 2009, PERŞEMBE


MySQL: histogram veri Almak için arsa mı?

Bir şekilde MySQL bin boyutlarını belirlemek için var mı? Şu anda, aşağıdaki SQL sorgu çalışıyorum:

select total, count(total) from faults GROUP BY total;

Oluşturulan bu veri yeterli ama çok fazla satır var. İhtiyacım olan şey önceden tanımlanmış kutuları içine veri grubu için bir yoldur. Bir betik dili ile bunu yapabilirim, ama orada doğrudan SQL yapmanın bir yolu var mı?

Örnek:

 ------- -------------- 
| 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 | 
------------------------

Ben ne arıyordum:

 ------------ --------------- 
| total      | count(total)  |
 ------------ --------------- 
|    30 - 40 |            23 | 
|    40 - 50 |            15 | 
|    50 - 60 |            51 | 
|    60 - 70 |            45 | 
------------------------------

Bu düz ileri bir şekilde elde edilebilir sanırım ama ilgili herhangi bir saklı yordam için bir referans de iyi olurdu.

CEVAP
28 NİSAN 2012, CUMARTESİ


Bu hızlı ve kirli bir histogram oluşturmak için süper bir yol hakkında bir yazı sayısal değerler için MySQL.

Orada başka yolları da daha iyi olan histogram oluşturmak için birden çok ve daha esnek, kullanarak DURUM açıklamaları ve karmaşık mantık diğer türleri. Bu yöntem zamanla beni kazanır ve çok kolay olduğu için tekrar zaman her kullanım örneği için değiştirmek için, ve bu yüzden kısa ve öz. Bu nasıl olur yap:

SELECT ROUND(numeric_value, -2)    AS bucket,
       COUNT(*)                    AS COUNT,
       RPAD('', LN(COUNT(*)), '*') AS bar
FROM   my_table
GROUP  BY bucket;

Sadece değiştirmek yazını ne olursa olsun numeric_value, değişim artış, yuvarlama, hepsi bu. Barlarda yaptım varsa çok fazla yetişmiyor böylece logaritmik ölçek, büyük değerler.

Bu güzel görünüyor rastgele veri üzerinde böyle bir sorgu bir örnektir tatlı. Verileri hızlı bir değerlendirme için yeterince iyi.

 -------- ---------- ----------------- 
| 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 | *               |
 -------- ---------- ----------------- 

Bazı notlar: maç var bu Aralıkları sayısı görünmez - sayma sütununa sıfır olmaz. Ayrıca, kullanıyorum Burada fonksiyon. Kolayca KESMEK ile değiştirebilirsiniz senin için daha mantıklı hissediyorum.

Burada http://blog.shlomoid.com/2011/08/how-to-quickly-create-histogram-in.html buldum

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • grickle

    grickle

    22 AĞUSTOS 2006
  • NextKsa

    NextKsa

    7 EKİM 2009
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011