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

SQL क्वेरी की परिणाम पंक्तियों को समान रूप से पूर्ण श्रेणी में कैसे कम करें?

पोस्टग्रेज . में , width_bucket() केवल वही चीज है जिसकी आप तलाश कर रहे हैं - किसी भी संख्या में पंक्तियों को दानेदार बनाने के लिए (N ) अंतर्निहित तालिका में किसी दिए गए (अधिमानतः छोटा .) में ) डेटा बिंदुओं की संख्या (n ) वजन को दर्शाने के लिए आप प्रत्येक डेटा बिंदु में योगदान देने वाली पंक्तियों की संख्या जोड़ सकते हैं।

एक छोटी सी बाधा:width_bucket() . का प्रकार हमें double precision पर कार्य करने की आवश्यकता है या numeric नंबर, timestamp . पर नहीं और अन्य। बस युग निकालें साथ काम करने के लिए।

इस तालिका परिभाषा और वर्तमान पोस्टग्रेज संस्करण को मानते हुए:

CREATE TABLE tbl (
  tbl_id serial PRIMARY KEY
, value  numeric NOT NULL
, created_at timestamptz NOT NULL
);

प्रश्न:

SELECT width_bucket(extract(epoch FROM t.created_at), x.min_epoch, x.max_epoch, 400) AS pix
     , round(avg(t.value), 2) AS avg  -- round is optional
     , count(*) AS weight
FROM   big t
CROSS  JOIN (SELECT extract(epoch FROM min(created_at)) AS min_epoch
                  , extract(epoch FROM max(created_at)) AS max_epoch FROM big) x
GROUP  BY 1
ORDER  BY 1;

परिणाम:

pix | avg    | weight
----+--------+------
1   | 152.58 | 7
2   | 155.16 | 8
3   | 148.89 | 7
...

400 पंक्तियाँ लौटाता है - जब तक कि N . न हो <n , जिस स्थिति में आपको N . मिलता है पंक्तियाँ।

संबंधित:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django ऑपरेशनल एरर:कनेक्शन के लिए नई प्रक्रिया को फोर्क नहीं कर सका

  2. एक कॉलम को लोअरकेस या अपरकेस में स्वचालित रूप से सम्मिलित करने के लिए पोस्टग्रेज नियम या ट्रिगर बनाएं

  3. एक सामान्य तालिका को एक विदेशी cstore_fdw तालिका में बदलें

  4. SQL में एकल पंक्ति को एकाधिक पंक्तियों में विभाजित करें

  5. केवल एक ट्रिगर के भीतर से प्रविष्टि की अनुमति दें