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

SQL में ग्रुप बाय / एग्रीगेट फंक्शन कन्फ्यूजन

मानक SQL (लेकिन MySQL नहीं) में, जब आप GROUP BY का उपयोग करते हैं, तो आपको उन सभी परिणाम कॉलमों को सूचीबद्ध करना होगा जो GROUP BY खंड में एकत्रित नहीं हैं। तो, अगर order_details 6 कॉलम हैं, तो आपको सभी 6 कॉलम सूचीबद्ध करने होंगे (नाम से - आप * . का उपयोग नहीं कर सकते हैं ग्रुप बाय क्लॉज में ग्रुप बाय या ऑर्डर बाय क्लॉज में।

आप यह भी कर सकते हैं:

SELECT order_no, SUM(order_price)
  FROM order_details
 GROUP BY order_no;

यह काम करेगा क्योंकि सभी गैर-कुल कॉलम ग्रुप बाय क्लॉज में सूचीबद्ध हैं।

आप कुछ ऐसा कर सकते हैं:

SELECT order_no, order_price, MAX(order_item)
  FROM order_details
 GROUP BY order_no, order_price;

यह क्वेरी वास्तव में अर्थपूर्ण नहीं है (या शायद अधिकतर अर्थपूर्ण नहीं है), लेकिन यह 'काम' करेगी। यह प्रत्येक अलग ऑर्डर नंबर और ऑर्डर मूल्य संयोजन को सूचीबद्ध करेगा, और उस कीमत से जुड़े अधिकतम ऑर्डर आइटम (संख्या) देगा। यदि किसी ऑर्डर के सभी आइटम के अलग-अलग मूल्य हैं, तो आपको प्रत्येक पंक्ति के समूहों के साथ समाप्त होगा। ओटीओएच, अगर एक ही कीमत पर ऑर्डर में कई आइटम हैं (जैसे £ 0.99 प्रत्येक), तो यह उन्हें एक साथ समूहित करेगा और उस कीमत पर अधिकतम ऑर्डर आइटम नंबर वापस कर देगा। (मुझे लगता है कि तालिका में (order_no, order_item) पर प्राथमिक कुंजी है जहां ऑर्डर के पहले आइटम में order_item = 1 है , दूसरा आइटम 2 है, आदि)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रोग्रामिंग में व्यक्ति के नाम का कैपिटलाइज़ेशन

  2. ORA-00904 अमान्य पहचानकर्ता" खंड द्वारा समूह में एक पहचानकर्ता के लिए

  3. Oracle क्वेरी में XMLType नोड्स को संयोजित करें

  4. एसक्यूएल आदेश उचित रूप से समाप्त नहीं हुई?

  5. मैं ssh टनल चेन (डबल टनल, कंपनी नेटवर्क में सर्वर) के माध्यम से Oracle डेटाबेस 11g सर्वर से कैसे जुड़ सकता हूं?