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

विंडो फ़ंक्शन पर SQL कंडीशन

ऑल-एट-वन्स ऑपरेशन:

और बढ़िया अध्याय विंडो के कार्यों पर प्रभाव :

मान लीजिए आपके पास:

CREATE TABLE Test ( Id INT) ;
 
INSERT  INTO Test VALUES  ( 1001 ), ( 1002 ) ;

SELECT Id
FROM Test
WHERE Id = 1002
  AND ROW_NUMBER() OVER(ORDER BY Id) = 1;

मामला 1:

If ( Id = 1002 ) is first, then if ( ROW_NUMBER() OVER(ORDER BY Id) = 1 )

परिणाम:1002

मामला 2:

If ( ROW_NUMBER() OVER(ORDER BY Id) = 1 ), then check if ( Id = 1002 )

परिणाम:खाली

आप जो चाहते हैं उसे प्राप्त करने के लिए आप विंडो वाले फ़ंक्शन को CTE/subquery . के साथ लपेट सकते हैं जैसा कि गॉर्डन उत्तर में है :

;WITH cte AS
(
  SELECT t.*, MAX(AVG) OVER (PARTITION BY city) AS average
  FROM avgTemperatures t
)
SELECT *
FROM cte
where average > 19
ORDER BY id;

db<>fiddle डेमो

आउटपुट:

╔═════╦══════════╦═════╦═════════╗
║ id  ║   city   ║ avg ║ months  ║
╠═════╬══════════╬═════╬═════════╣
║   1 ║ New-York ║  20 ║     3   ║
║   2 ║ New-York ║  19 ║     6   ║
║   3 ║ New-York ║  15 ║    12   ║
║   4 ║ New-York ║  15 ║    24   ║
║  11 ║ Miami    ║  28 ║     1   ║
║  12 ║ Miami    ║  25 ║     4   ║
║  13 ║ Miami    ║  21 ║    12   ║
║  14 ║ Miami    ║  22 ║    15   ║
║  15 ║ Miami    ║  20 ║    24   ║
╚═════╩══════════╩═════╩═════════╝


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL अनुक्रमणिका आकार और मान संख्या

  2. pg_stat_statements के साथ बड़े सांख्यिकीय सेट एकत्रित करना?

  3. हेरोकू, पोस्टग्रेएसक्यूएल, डीजेंगो, टिप्पणियां, स्वादिष्ट:कोई भी ऑपरेटर दिए गए नाम और तर्क प्रकार से मेल नहीं खाता। आपको स्पष्ट प्रकार के कास्ट जोड़ने की आवश्यकता हो सकती है

  4. सरणी से स्ट्रिंग बनाएं

  5. क्या कोई ऐसा फ़ंक्शन है जो PostgreSQL में दिनांक बनाने में एक वर्ष, महीना और दिन लेता है?