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

नेस्टेड चयन या क्वेरी में शामिल हों?

oracle with के साथ कई टैग के कारण , मैंने टैग को अनदेखा कर दिया mysql ( एक से आपको छुटकारा मिल जाना चाहिए। उदाहरण के लिए कृपया तय करें कि कौन सा DBMS क्या आप उपयोग कर रहे हैं, वैसे मैंने पहले ही अप्रासंगिक एक oracle-sqldeveloper को हटा दिया है )

ऐसा लगता है कि आपको ऐसे चुनिंदा कथन की आवश्यकता है ( आधुनिक ANSI-92 JOIN का उपयोग करना पसंद करते हैं) सिंटैक्स, आसानी से बनाए रखा और समझने योग्य ) अवरोही sum . द्वारा क्रमित करने के साथ और row_number . का योगदान के रूप में कार्य करें:

SELECT Name, Sum_Takings 
  FROM
  (
   SELECT f.Name, sum(p.Takings) Sum_Takings,
          row_number() over (ORDER BY sum(p.Takings)) as rn
     FROM Film f 
     LEFT JOIN Cinema c ON f.Cinema_ID = c.ID
     LEFT JOIN Performance p ON f.ID = p.id_film
    GROUP BY f.Name
   )
  WHERE rn = 1;

जोड़ा गया DDL . के साथ निम्नलिखित के रूप में बयान:

SQL>  CREATE TABLE Cinema (
  2     ID     integer PRIMARY KEY NOT NULL,
  3     Title  varchar2(100) NOT NULL
  4   );

Table created

SQL>  CREATE TABLE Film (
  2     ID   integer PRIMARY KEY NOT NULL,
  3     Name varchar2(100) NOT NULL,
  4     Cinema_ID integer
  5       CONSTRAINT fk_Cinema_ID REFERENCES Cinema(ID)
  6   );

Table created

SQL>   CREATE TABLE Performance (
  2     ID      integer PRIMARY KEY NOT NULL,
  3     ID_Film integer
  4          CONSTRAINT fk_Film_ID REFERENCES Film(ID),
  5     Takings integer
  6   );

Table created

SQL>  INSERT ALL
  2         INTO Cinema(ID,Title) VALUES(1,'NiteHawk')
  3         INTO Cinema(ID,Title) VALUES(2,'Symphony Space')
  4         INTO Cinema(ID,Title) VALUES(3,'The Ziegfeld')
  5         INTO Cinema(ID,Title) VALUES(4,'Cinema Village')
  6       SELECT * FROM dual;

4 rows inserted

SQL>  INSERT ALL
  2         INTO Film(ID,Name,Cinema_ID) VALUES(1,'Citizen Kane',1)
  3         INTO Film(ID,Name,Cinema_ID) VALUES(2,'Titanic',2)
  4         INTO Film(ID,Name,Cinema_ID) VALUES(3,'Brave Heart',4)
  5         INTO Film(ID,Name,Cinema_ID) VALUES(4,'Dumb and Dummer',3)
  6         INTO Film(ID,Name,Cinema_ID) VALUES(5,'How To Train Your Dragon',2)
  7         INTO Film(ID,Name,Cinema_ID) VALUES(6,'Beetle Juice',3)
  8       SELECT * FROM dual;

6 rows inserted

SQL>  INSERT ALL
  2         INTO Performance VALUES(1,1,15)
  3         INTO Performance VALUES(2,1,4)
  4         INTO Performance VALUES(3,2,10)
  5         INTO Performance VALUES(4,3,1)
  6         INTO Performance VALUES(5,4,5)
  7         INTO Performance VALUES(6,3,3)
  8         INTO Performance VALUES(7,2,7)
  9         INTO Performance VALUES(8,5,7)
 10         INTO Performance VALUES(9,6,6)
 11       SELECT * FROM dual;

9 rows inserted

SQL> commit;

Commit complete

SQL> SELECT Name, Sum_Takings
  2    FROM
  3    (
  4     SELECT f.Name, sum(p.Takings) Sum_Takings,
  5            row_number() over (ORDER BY sum(p.Takings)) as rn
  6       FROM Film f
  7       LEFT JOIN Cinema c ON f.Cinema_ID = c.ID
  8       LEFT JOIN Performance p ON f.ID = p.id_film
  9      GROUP BY f.Name
 10     )
 11    WHERE rn = 1
 12  ;

NAME                                                                  SUM_TAKINGS
--------------------------------------------------------------------- -----------
Brave Heart                                                                     4

dbfiddle.uk डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा लॉगिंग एपीआई (java.util.logging ) का उपयोग करके Oracle जावा संग्रहीत प्रक्रिया को लॉग करना

  2. चर से स्थिरांक के साथ गतिशील रूप से लैम्ब्डा अभिव्यक्ति उत्पन्न करें

  3. हाइबरनेट पैरामीटरयुक्त sql क्वेरी धीमी और सक्रिय ऑरैकल सत्र

  4. sql डेवलपर का उपयोग करके ऑरैकल डीबी पर तिथि के अनुसार रिकॉर्ड और समूह गणना की गणना करने की आवश्यकता है

  5. COALESCE () Oracle में फ़ंक्शन