StepCoding

ค่า NULL กับการใช้งาน Function ผลรวมต่าง ๆ

อ่าน [1796] หมวดหมู่: คำสั่ง SQL เบื้องต้น

Function ผลรวมต่าง ๆ จะไม่สนใจค่า NULL ยกเว้น COUNT(*) ซึ่งมันจะนับจำนวนแถวที่มีค่า NULL ไปด้วย เช่น เรามีตารางดังนี้

SELECT * FROM t;
ijk
01NULL
NULL2NULL
2NULLNULL
34NULL
4NULLNULL

การใช้ COUNT(*) จะนับจำนวนแถวทั้งหมด ถึงแม้ว่ามันจะมีค่า NULL อยู่ก็ตาม

SELECT COUNT(*) FROM t;
COUNT(*)
5

แต่การใช้ COUNT(expression) จะไม่สนใจค่า NULL

SELECT COUNT(i), COUNT(j), COUNT(k) FROM t;
COUNT(i)COUNT(j)COUNT(k)
430

และการใช้ COUNT(DISTINCT) ก็จะไม่สนใจค่า NULL เช่นกัน

SELECT COUNT(DISTINCT j), COUNT(DISTINCT k) FROM t;
COUNT(DISTINCT j)COUNT(DISTINCT k)
30

รวมไปถึง function ผลรวมอื่น ๆ ด้วย ที่ไม่สนใจค่า NULL

SELECT SUM(i), SUM(j), SUM(k), SUM(i+j+k) FROM t;
SUM(i)SUM(j)SUM(k)SUM(i+j+k)
9700
SELECT AVG(i), AVG(j), AVG(k) FROM t;
AVG(i)AVG(j)AVG(k)
2.25002.3333NULL
SELECT MIN(i), MIN(j), MIN(k) FROM t;
MIN(i)MIN(j)MIN(k)
01NULL
SELECT MAX(i), MAX(j), MAX(k) FROM t;
MAX(i)MAX(j)MAX(k)
44NULL

ผู้สนับสนุน