ANSI SQL मानक परिभाषित करता है (अध्याय 6.5, सेट समारोह विनिर्देश) खाली परिणाम सेट पर कुल कार्यों के लिए निम्नलिखित व्यवहार:
COUNT(...) = 0
AVG(...) = NULL
MIN(...) = NULL
MAX(...) = NULL
SUM(...) = NULL
औसत, न्यूनतम और अधिकतम के खाली होने के बाद AVG, MIN और MAX के लिए रिटर्निंग पूर्ण समझ में आता है, अपरिभाषित है।
अंतिम, हालांकि, मुझे परेशान करता है: गणितीय रूप से, एक खाली सेट का एसयूएम अच्छी तरह से परिभाषित है 0
:। 0 का उपयोग, तटस्थ तत्व के अलावा, जैसा कि आधार मामला सब कुछ सुसंगत बनाता है:
SUM({}) = 0 = 0
SUM({5}) = 5 = 0 + 5
SUM({5, 3}) = 8 = 0 + 5 + 3
SUM({5, NULL}) = NULL = 0 + 5 + NULL
मूल SUM({})
रूप null
से परिभाषित करने से "कोई पंक्तियाँ नहीं" एक विशेष मामला बन जाता है जो दूसरों के साथ फिट नहीं होता है:
SUM({}) = NULL = NULL
SUM({5}) = 5 != NULL + 5 (= NULL)
SUM({5, 3}) = 8 != NULL + 5 + 3 (= NULL)
क्या उस विकल्प का कुछ स्पष्ट लाभ था जिसे (SUM NULL होने के नाते) याद किया गया था?