STDDEV_POP(expr)
Returns the population standard deviation of expr
(the square root of VAR_POP()
). You can also use STD()
or STDDEV()
, which are equivalent but not standard SQL.
It is an aggregate function, and so can be used with the GROUP BY clause.
From MariaDB 10.2.2, STDDEV_POP() can be used as a window function.
STDDEV_POP() returns NULL
if there were no matching rows.
As an aggregate function:
CREATE OR REPLACE TABLE stats (category VARCHAR(2), x INT); INSERT INTO stats VALUES ('a',1),('a',2),('a',3), ('b',11),('b',12),('b',20),('b',30),('b',60); SELECT category, STDDEV_POP(x), STDDEV_SAMP(x), VAR_POP(x) FROM stats GROUP BY category; +----------+---------------+----------------+------------+ | category | STDDEV_POP(x) | STDDEV_SAMP(x) | VAR_POP(x) | +----------+---------------+----------------+------------+ | a | 0.8165 | 1.0000 | 0.6667 | | b | 18.0400 | 20.1693 | 325.4400 | +----------+---------------+----------------+------------+
As a window function:
CREATE OR REPLACE TABLE student_test (name CHAR(10), test CHAR(10), score TINYINT); INSERT INTO student_test VALUES ('Chun', 'SQL', 75), ('Chun', 'Tuning', 73), ('Esben', 'SQL', 43), ('Esben', 'Tuning', 31), ('Kaolin', 'SQL', 56), ('Kaolin', 'Tuning', 88), ('Tatiana', 'SQL', 87); SELECT name, test, score, STDDEV_POP(score) OVER (PARTITION BY test) AS stddev_results FROM student_test; +---------+--------+-------+----------------+ | name | test | score | stddev_results | +---------+--------+-------+----------------+ | Chun | SQL | 75 | 16.9466 | | Chun | Tuning | 73 | 24.1247 | | Esben | SQL | 43 | 16.9466 | | Esben | Tuning | 31 | 24.1247 | | Kaolin | SQL | 56 | 16.9466 | | Kaolin | Tuning | 88 | 24.1247 | | Tatiana | SQL | 87 | 16.9466 | +---------+--------+-------+----------------+
© 2019 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/stddev_pop/