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

SQL MIN () और GROUP BY के साथ अतिरिक्त फ़ील्ड

यदि आप प्रत्येक विभाग में "सबसे सस्ता" कर्मचारी प्राप्त करना चाहते हैं तो आपके पास मेरे सिर के ऊपर से दो विकल्प होंगे:

SELECT
     E.*     -- Don't actually use *, list out all of your columns
FROM
     Employees E
INNER JOIN
     (
          SELECT
               department,
               MIN(salary) AS min_salary
          FROM
               Employees
          GROUP BY
               department
     ) AS SQ ON
     SQ.department = E.department AND
     SQ.min_salary = E.salary

या आप उपयोग कर सकते हैं:

SELECT
     E.*
FROM
     Employees E1
LEFT OUTER JOIN Employees E2 ON
     E2.department = E1.department AND
     E2.salary < E1.salary
WHERE
     E2.employee_id IS NULL -- You can use any NOT NULL column here

दूसरा कथन प्रभावी ढंग से यह कहकर काम करता है, मुझे सभी कर्मचारी दिखाओ जहाँ आपको कम वेतन के साथ उसी विभाग में कोई अन्य कर्मचारी नहीं मिल सकता है।

दोनों ही मामलों में, यदि दो या दो से अधिक कर्मचारियों के पास समान वेतन है जो न्यूनतम है तो आप उन दोनों (सभी) को प्राप्त करेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - कॉलम में कैरेक्टर बदलें

  2. MySQL पर एक उपयोगकर्ता बनाना

  3. प्वाइंट का उपयोग कर मैसकल स्थानिक दूरी - काम नहीं कर रहा

  4. जॉइन और GROUP_CONCAT तीन टेबल के साथ

  5. टेक्स्ट फ़ील्ड के शब्द गणना आँकड़े निर्धारित करने के लिए SQL का उपयोग करना