できるPRO MySQL できるPROシリーズ Kindle版の内容をまとめる。
NULL
の取り扱いについてSUM()
, AVG()
などの集約関数は,引数で指定した行にNULL
があった場合,NULL値のレコードを除いて計算する。AVG()
, COUNT()
は,NULL
値のレコードが除かれた場合と,含まれた場合で結果が変わるので注意が必要。NULL
値を含めて計算を行いたい場合,COUNT(*)
を使用すれば,すべての行数を取得できるので利用すること。関数 | 意味 |
---|---|
AVG() |
平均値 |
COUNT() |
行数 |
MAX() |
最大数 |
MIN() |
最小数 |
SUM() |
合計 |
SELECT COUNT(*) FROM city
WHERE CountryCode = 'JPN';
MariaDB [world]> SELECT COUNT(*) FROM city WHERE CountryCode = 'JPN';
+----------+
| COUNT(*) |
+----------+
| 248 |
+----------+
1 row in set (0.00 sec)
SELECT SUM(Population) FROM country
WHERE Continent = 'Asia';
MariaDB [world]> SELECT SUM(Population) FROM country WHERE Continent = 'Asia';
+-----------------+
| SUM(Population) |
+-----------------+
| 3705025700 |
+-----------------+
1 row in set (0.00 sec)
SELECT MAX(Population) FROM city
WHERE CountryCode = 'JPN';
MariaDB [world]> SELECT MAX(Population) FROM city WHERE CountryCode = 'JPN';
+-----------------+
| MAX(Population) |
+-----------------+
| 7980230 |
+-----------------+
1 row in set (0.00 sec)
SELECT MIN(Population) FROM city
WHERE CountryCode = 'JPN';
MariaDB [world]> SELECT MIN(Population) FROM city WHERE CountryCode = 'JPN';
+-----------------+
| MIN(Population) |
+-----------------+
| 91170 |
+-----------------+
1 row in set (0.00 sec)
SELECT * FROM city
WHERE CountryCode = 'JPN'
ORDER BY Population DESC
LIMIT 1;
MariaDB [world]> SELECT * FROM city WHERE CountryCode = 'JPN'ORDER BY Population DESC LIMIT 1;
+------+-------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+------+-------+-------------+----------+------------+
| 1532 | Tokyo | JPN | Tokyo-to | 7980230 |
+------+-------+-------------+----------+------------+
1 row in set (0.00 sec)
SELECT * FROM city
WHERE CountryCode = 'JPN'
ORDER BY Population ASC
LIMIT 1;
MariaDB [world]> SELECT * FROM city WHERE CountryCode = 'JPN'ORDER BY Population ASC LIMIT 1;
+------+---------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+------+---------+-------------+----------+------------+
| 1779 | Tsuyama | JPN | Okayama | 91170 |
+------+---------+-------------+----------+------------+
1 row in set (0.00 sec)