Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa mengembalikan data boxplot numerik dari semua hasil menggunakan 1 kueri mySQL?

Saya telah menemukan solusi di PostgreSQL menggunakan menggunakan PL/Python.

Namun, saya membiarkan pertanyaan terbuka jika ada orang lain yang memberikan solusi di mySQL.

CREATE TYPE boxplot_values AS (
  min       numeric,
  q1        numeric,
  median    numeric,
  q3        numeric,
  max       numeric
);

CREATE OR REPLACE FUNCTION _final_boxplot(strarr numeric[])
   RETURNS boxplot_values AS
$$
    x = strarr.replace("{","[").replace("}","]")
    a = eval(str(x))

    a.sort()
    i = len(a)
    return ( a[0], a[i/4], a[i/2], a[i*3/4], a[-1] )
$$
LANGUAGE 'plpythonu' IMMUTABLE;

CREATE AGGREGATE boxplot(numeric) (
  SFUNC=array_append,
  STYPE=numeric[],
  FINALFUNC=_final_boxplot,
  INITCOND='{}'
);

Contoh:

SELECT customer_id as cid, (boxplot(price)).*
FROM orders
GROUP BY customer_id;

   cid |   min   |   q1    | median  |   q3    |   max
-------+---------+---------+---------+---------+---------
  1001 | 7.40209 | 7.80031 |  7.9551 | 7.99059 | 7.99903
  1002 | 3.44229 | 4.38172 | 4.72498 | 5.25214 | 5.98736

Sumber:http://www.christian-rossow.de/articles/PostgreSQL_boxplot_median_quartiles_aggregate_function.php



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya membuat halaman kueri khusus tanpa mengesampingkan pagination default?

  2. bergulir terus menerus. AJAX, PHP, JAVASCRIPT, MYSQL

  3. Kesalahan Sintaks MySQL pada DELIMITER sebelum CREATE TRIGGER

  4. Doctrine 2 SUM() pembantu yang setara?

  5. Mysql NOT IN dan NOT EXIST sama?