मानक 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 है, आदि)