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

sql . में समूह क्रमागत समय अंतराल

आप PL/pgSQL में वेरिएबल का ठीक-ठीक उपयोग कर सकते हैं।

मैं इसे टेबल फ़ंक्शन के साथ हल करूंगा।

मान लें कि तालिका को stock कहा जाता है , मेरा कोड इस तरह दिखेगा:

CREATE OR REPLACE FUNCTION combine_periods() RETURNS SETOF stock
   LANGUAGE plpgsql STABLE AS
$$DECLARE
   s stock;
   period stock;
BEGIN
   FOR s IN
      SELECT stock_name, action, start_date, end_date
      FROM stock
      ORDER BY stock_name, action, start_date
   LOOP
      /* is this a new period? */
      IF period IS NOT NULL AND
         (period.stock_name <> s.stock_name
            OR period.action <> s.action
            OR period.end_date <> s.start_date)
      THEN
         /* new period, output last period */
         RETURN NEXT period;
         period := NULL;
      ELSE
         IF period IS NOT NULL
         THEN
            /* period continues, update end_date */
            period.end_date := s.end_date;
         END IF;
      END IF;

      /* remember the beginning of a new period */
      IF period IS NULL
      THEN
         period := s;
      END IF;
   END LOOP;

   /* output the last period */
   IF period IS NOT NULL
   THEN
      RETURN NEXT period;
   END IF;

   RETURN;
END;$$;

और मैं इसे इस तरह कहूंगा:

test=> SELECT * FROM combine_periods();
┌────────────┬─────────┬────────────┬──────────┐
│ stock_name │ action  │ start_date │ end_date │
├────────────┼─────────┼────────────┼──────────┤
│ google     │ falling │          3 │        4 │
│ google     │ growing │          1 │        3 │
│ google     │ growing │          4 │        5 │
│ yahoo      │ growing │          1 │        2 │
└────────────┴─────────┴────────────┴──────────┘
(4 rows)



  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. रेल 3.2.* और पोस्टग्रेज़ का उपयोग करके स्ट्रिंग बनाम टेक्स्ट - क्या मुझे हमेशा टेक्स्ट का उपयोग करना चाहिए?

  3. Postgresql कुछ कुल राशि तक पहुंचने तक चयन करें

  4. प्राथमिक कुंजी/धारावाहिक को संघनित करना संभव है?

  5. टाइपओआरएम की क्वेरीबिल्डर चेनिंग विधियों का परीक्षण करने का एक उचित तरीका क्या होगा?