Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да върна числовите данни за полета на всички резултати, използвайки 1 mySQL заявка?

Намерих решение в PostgreSQL, използвайки PL/Python.

Въпреки това оставям въпроса отворен, в случай че някой друг излезе с решение в 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='{}'
);

Пример:

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

Източник:http://www.christian-rossow.de/articles/PostgreSQL_ngplogplotfunction



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете SUM от продажбите за няколко години в колони

  2. Проблеми с показването на японски знаци при използване на PHP и MySQL

  3. Каква е най-добрата практика за ограничаване на конкретни страници до влезли потребители само в Codeigniter?

  4. Как да създадете композитен първичен ключ в MySQL

  5. MySQL Брой различни стойности от една колона