परिभाषा के अनुसार, ORDER BY को बाद . संसाधित किया जाता है GROUP BY के साथ समूह बनाना। परिभाषा के अनुसार, किसी भी SELECT स्टेटमेंट को प्रोसेस करने का वैचारिक तरीका है:
- FROM क्लॉज में संदर्भित सभी तालिकाओं के कार्टेशियन उत्पाद की गणना करें
- परिणामों को फ़िल्टर करने के लिए FROM क्लॉज से शामिल होने के मानदंड लागू करें
- परिणामों को और अधिक फ़िल्टर करने के लिए WHERE क्लॉज में फ़िल्टर मानदंड लागू करें
- ग्रुप बाय क्लॉज के आधार पर परिणामों को सबसेट में समूहित करें, ऐसे प्रत्येक उपसमुच्चय के लिए परिणामों को एक पंक्ति में संक्षिप्त करें और किसी भी समग्र कार्यों के मूल्यों की गणना करें -
SUM()
,MAX()
,AVG()
, आदि -- ऐसे प्रत्येक उपसमुच्चय के लिए। ध्यान दें कि यदि कोई ग्रुप बाय क्लॉज निर्दिष्ट नहीं है, तो परिणामों को ऐसा माना जाता है जैसे कि एक एकल सबसेट है और कोई भी समग्र कार्य पूरे परिणाम सेट पर लागू होता है, इसे एक पंक्ति में संक्षिप्त करता है। - HAVING क्लॉज के आधार पर अब-समूहित परिणामों को फ़िल्टर करें।
- परिणामों को ORDER BY खंड के आधार पर क्रमित करें।
GROUP BY क्लॉज के साथ SELECT के परिणाम सेट में केवल एक ही कॉलम की अनुमति है, निश्चित रूप से,
- ग्रुप बाय क्लॉज में संदर्भित कॉलम
- समग्र कार्य (जैसे
MAX()
) - शाब्दिक/स्थिरांक
- उपरोक्त में से किसी से व्युत्पन्न अभिव्यक्तियाँ।
केवल टूटा हुआ SQL कार्यान्वयन select xxx,yyy,a,b,c FROM foo GROUP BY xxx,yyy
जैसी चीज़ों की अनुमति देता है - कॉलम ए, बी और सी के संदर्भ अर्थहीन/अपरिभाषित हैं, यह देखते हुए कि अलग-अलग समूह एक ही पंक्ति में ढह गए हैं,