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

कुल फ़ंक्शन द्वारा चुनी गई पंक्ति की आईडी कैसे प्राप्त करें?

कम से कम 3 तरीके हैं, नीचे देखें:

CREATE TEMP TABLE test (
    id integer, name text, amount numeric, datefrom timestamptz
);

COPY test FROM STDIN (FORMAT csv);
3,a,8,2018-01-01
4,a,3,2018-01-15 10:00
5,b,1,2018-02-20
6,b,1,2019-01-01
\.

विधि 1. DISTINCT ON (PostgreSQL-specific) का उपयोग करना

SELECT DISTINCT ON (name)
  id, name, amount
FROM test
ORDER BY name, amount DESC, datefrom ASC;

विधि 2. विंडो फ़ंक्शन का उपयोग करना

SELECT id, name, amount FROM (
  SELECT *, row_number() OVER (
    PARTITION BY name
    ORDER BY amount DESC, datefrom ASC) AS __rn
  FROM test) AS x
WHERE x.__rn = 1;

विधि 3. सहसंबद्ध सबक्वेरी का उपयोग करना

SELECT id, name, amount FROM test
WHERE id = (
  SELECT id FROM test AS t2
  WHERE t2.name = test.name
  ORDER BY amount DESC, datefrom ASC
  LIMIT 1
); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL 'AT TIME ZONE', क्वेरी वाइड और 'SELECT' सभी कॉलम (tablename.*) एक्सप्रेशन के साथ

  2. पंक्ति की संख्या एक सीमा के अंतर्गत होने पर ही पंक्ति सम्मिलित करें को पोस्टग्रेज़ करें

  3. सीरियल से पहचान में टेबल आईडी कैसे बदलें?

  4. Postgres . में वस्तुओं के JSON सरणी को क्वेरी करना

  5. ActiveRecord का उपयोग करके GROUP BY और COUNT