Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để trả về dữ liệu ô vuông dạng số của tất cả các kết quả bằng cách sử dụng 1 truy vấn mySQL?

Tôi đã tìm thấy một giải pháp trong PostgreSQL bằng cách sử dụng PL / Python.

Tuy nhiên, tôi để ngỏ câu hỏi trong trường hợp ai đó đưa ra giải pháp trong 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='{}'
);

Ví dụ:

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

Nguồn: http://www.christian-rossow.de/articles/PostgreSQL_boxplot_median_quarctures_aggregate



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giải pháp thay thế để sử dụng SQL động trong một Thủ tục được lưu trữ là gì

  2. Thuật toán tìm kiếm các mục liên quan dựa trên các thẻ phổ biến

  3. Hàm MySQL Max trộn các hàng

  4. mysqlimport bằng cách sử dụng kết xuất

  5. Cách thay đổi hành động cho khóa ngoại