Sql commands using joins for the following four tables -


चार टेबल हैं

  1. कर्मचारी (कर्मचारी _आईडी, नाम, मुख्य_आईडी)
  2. Emp_Sal (Employee_id, वेतन)

अब मुझे एक प्रश्न लिखिए जो कर्मचारी आईडी को प्रदर्शित करता है, जो प्रत्येक विभाग में अधिकतम वेतन प्राप्त करते हैं।

मेरी खुद की टेस्ट टेबल बनाना:

  @Employee टेबल (Employee_id INT, नाम VARCHAR (मैक्स), Chief_id INT) @Department टेबल (Department_Id INT, नाम VARCHAR (मैक्स)) की घोषणा @Emp_Dep टेबल (Employee_id INT, Department_Id घोषणा घोषणा INT) की घोषणा @Emp_Sal टेबल (Employee_id INT, वेतन दशमलव) @Employee का चयन करें 1 में डालने, 'जॉन डो', 0 यूनिअन सभी 2 चुनने के बाद 'जॉन डो', 0 यूनिअन सभी 3 चुनने के बाद 'जॉन डो', 0 यूनिअन सभी चयन 4, 'जॉन डो', 0 यूनियन सभी का चयन 5, 'जॉन डो', यूनियन सभी का चयन 6, 'जॉन डो', यूनियन का चयन 7, 'जॉन डो', 0; विभाग का चयन 1 में सम्मिलित करें, 'मुमिन' यूनियन सभी का चयन 2, 'म्यू' यूनियन सभी का चयन करें 3, 'न्यूनतम'; इंप्रेशन में @Emp_Dep SELECT 1, 1 यूनियन का चयन करें 2, 1 यूनियन सभी का चयन 3, 2 यूनियन सभी का चयन 4, 2 यूनियन सभी का चयन करें 5, 3 यूनियन सभी का चयन 6, 3 यूनियन सभी का चयन 7, 3; INSERT INTO @Emp_Sal का चयन करें 1, 1200 यूनिअन सभी का चयन करें 2, 1100 यूनिअन सभी का चयन 3, 2000 यूनिअन सभी का चयन करें 4, 2000 यूनिअन सभी का चयन करें 5, 3451 यूनिअन सभी का चयन करें 6, 3321 यूनिअन सभी का चयन 7, 3123;  

यह संस्करण किसी भी विभाग में सभी लोगों को बांधेगा यदि वे हैं:)

  के साथ [मर्ज किए गए] के रूप में ([एम्पायर [SELECT [@ Employee]। [Employee_id] , [@Employee]। [नाम], [@Department]। [नाम] [विभाग], [@Department]। [Department_Id], [@Emp_Sal]। [वेतन] @Employee भीतर से शामिल हों @Emp_Sal पर [@Employee ]। [Employee_id] = [@Emp_Sal]। [Employee_id] अंदरूनी @Emp_Dep पर [@Emp_Sal]। [Employee_id] = [@Emp_Dep]। [Employee_id] अंदरूनी शामिल हों @Department पर [@Emp_Dep] में शामिल हों। [Department_Id] = [@Department]। [Department_Id]) चुनें [मुख्य] ​​.Employee_id, [मुख्य] ​​.Name, [मुख्य] ​​.Department, [मुख्य] ​​.Salary से मर्ज किया गया [मुख्य] ​​जहां [वेतन] = (चयन मैक्स (वेतन) से [मर्ज किए गए] WHERE विभाग_आईडी = [मुख्य]। Department_Id);  

जबकि इस संस्करण केवल प्रत्येक विभाग से 1 का चयन करेंगे, तो आप ROW_NUMBER में () से अधिक

<व्यक्ति आप शीर्ष पर पाने के लिए एक तरह से यह पता लगाने की है [@Employee], [Employee_id]> के साथ [मर्ज किए गए] के रूप में (चुनें [@Employee] पूर्व।। [नाम], [@Department]। [नाम] [विभाग], [@Department]। [Department_Id] , [@Emp_Sal]। [वेतन], ROW_NUMBER () से अधिक (BY [@Department] आदेश। [Department_Id] ASC, [@Emp_Sal]। [वेतन] DESC, [@Employee]। [Employee_id] एएससी) 'RowNumber के रूप में '@Employee भीतर से शामिल हों। @Emp_Sal पर [@Employee]। [Employee_id] = [@Emp_Sal]। [Employee_id] अंदरूनी शामिल हों @Emp_Dep पर [@Emp_Sal] [Employee_id] = [@Emp_Dep]। [Employee_id] अंदरूनी शामिल हों @Department पर [@Emp_Dep]। [Department_Id] = [@Department]। [Department_Id]) चुनें [मुख्य] ​​.Employee_id, [मुख्य] ​​.Name, [मुख्य] ​​.Department, [मुख्य] ​​.Salary से मर्ज किया गया [मुख्य] जहां [रो नंबर] = (SELECT MAX (RowNumber) FROM [Merged] WHERE Department_Id = [मुख्य]। डेपेर्टमे nt_Id);

उल्लेख हो सकता है कि यह माइक्रोसॉफ्ट एसक्यूएल सर्वर के लिए है!


Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -