อ่าน [137]
หมวดหมู่:
คำสั่ง SQL เบื้องต้น
Function ผลรวมต่าง ๆ จะไม่สนใจค่า NULL ยกเว้น COUNT(*) ซึ่งมันจะนับจำนวนแถวที่มีค่า NULL ไปด้วย เช่น เรามีตารางดังนี้
SELECT * FROM t;
| i | j | k |
| 0 | 1 | NULL |
| NULL | 2 | NULL |
| 2 | NULL | NULL |
| 3 | 4 | NULL |
| 4 | NULL | NULL |
การใช้ COUNT(*) จะนับจำนวนแถวทั้งหมด ถึงแม้ว่ามันจะมีค่า NULL อยู่ก็ตาม
SELECT COUNT(*) FROM t;
แต่การใช้ COUNT(expression) จะไม่สนใจค่า NULL
SELECT COUNT(i), COUNT(j), COUNT(k) FROM t;
| COUNT(i) | COUNT(j) | COUNT(k) |
| 4 | 3 | 0 |
และการใช้ COUNT(DISTINCT) ก็จะไม่สนใจค่า NULL เช่นกัน
SELECT COUNT(DISTINCT j), COUNT(DISTINCT k) FROM t;
| COUNT(DISTINCT j) | COUNT(DISTINCT k) |
| 3 | 0 |
รวมไปถึง 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) |
| 9 | 7 | 0 | 0 |
SELECT AVG(i), AVG(j), AVG(k) FROM t;
| AVG(i) | AVG(j) | AVG(k) |
| 2.2500 | 2.3333 | NULL |
SELECT MIN(i), MIN(j), MIN(k) FROM t;
| MIN(i) | MIN(j) | MIN(k) |
| 0 | 1 | NULL |
SELECT MAX(i), MAX(j), MAX(k) FROM t;
| MAX(i) | MAX(j) | MAX(k) |
| 4 | 4 | NULL |