Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं 1 mySQL क्वेरी का उपयोग करके सभी परिणामों का संख्यात्मक बॉक्सप्लॉट डेटा कैसे वापस कर सकता हूं?

मुझे PL/Python का उपयोग करके PostgreSQL में एक समाधान मिला है।

हालांकि, अगर कोई अन्य व्यक्ति 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_boxplot_aggregate_quartiles.phppSQL_boxplot_aggregate_quartiles_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. मुझे समझ नहीं आ रहा है कि मैं अपना पिछला इनलॉग समय कैसे अपडेट करूं

  2. MySQL में किसी संख्या में अग्रणी शून्य कैसे जोड़ें?

  3. InnoDB/MyISAM रिकॉर्ड डालने के लिए आवश्यक समय में अंतर

  4. MySQL में कॉलम का आकार कैसे बदलें

  5. Postgresql में MySQL के ORDER BY FIELD () का अनुकरण करना