воскресенье, 25 марта 2012 г.

SQL - Как себя поведут агрегирующие функции с NULL

SQL - Как себя поведут агрегирующие функции на следующих данных:

+---------+------+-------+
| subject | test | score |
+---------+------+-------+
| Jane | A | 47 |
| Jane | B | 50 |
| Jane | C | NULL |
| Jane | D | NULL |
| Marvin | A | 52 |
| Marvin | B | 45 |
| Marvin | C | 53 |
| Marvin | D | NULL |

например, такой запрос:
SELECT subject, AVG(score) AS average FROM expt GROUP BY subject;
Запрос выполнится успешно, значения NULL будут пропущены
Jane - 48.5
Marvin - 50

Больше подробностей и особенностей http://onlamp.com/onlamp/​excerpt/mysqlckbk/index1.html
Особо понравилось различие в работе COUNT
SELECT COUNT(*), COUNT(score) FROM expt;
COUNT(*) - 8
COUNT(score) - 5