VAR_ SAMP
On this page
Calculates the sample variance value from a set of numbers.
VAR_
returns NULL if there are not matching rows.
May be used as a window function and with the frame clause.
Syntax
Aggregate Function
VAR_SAMP ( expression )
Window Function & Window Frame Clause
VAR_SAMP ( [ DISTINCT ] expr ) OVER ([PARTITION BY expr][ORDER BY expr] [<window_frame_function>])
Arguments
-
expression: any expression.
This may be a column name, the result of another function, or a math operation.
Return Type
A double.
Examples
CREATE TABLE player_scores(player_name VARCHAR(50), player_id VARCHAR(10),1st_qtr_score DECIMAL(5,2), 2nd_qtr_score DECIMAL(5,2),3rd_qtr_score DECIMAL(5,2), 4th_qtr_score DECIMAL(5,2),yearly_total AS 1st_qtr_score + 2nd_qtr_score + 3rd_qtr_score + 4th_qtr_score PERSISTED DECIMAL(5,2));INSERT INTO player_scores VALUES('Steve', '119','22.50','72.00', '63.00', '45.00'),('Jack', '432', '90.10', '78.00','88.20', '92.20'),('Jim', '779','75.00', '68.90','55.70', '72.00'),('Eve', '189','91.50', '88.10', '95.00', '94.50'),('Shelia','338', '75.60', '72.00', '81.10', '78.40'),('June', '521', '81.00', '87.30','76.80','82.20'),('Martin', '674','98.80', '95.10', '88.00', '96.40');
Aggregate Function
SELECT VAR_SAMP(yearly_total) FROM player_scores;
+------------------------+
| VAR_SAMP(yearly_total) |
+------------------------+
| 3801.568095 |
+------------------------+
Window Function
SELECT player_name, 3rd_qtr_score, 4th_qtr_score,ROUND(VAR_SAMP(3rd_qtr_score) OVER (ORDER BY player_name)) AS VAR_SAMPFROM player_scoresORDER BY player_name;
+-------------+---------------+---------------+----------+
| player_name | 3rd_qtr_score | 4th_qtr_score | VAR_SAMP |
+-------------+---------------+---------------+----------+
| Eve | 95.00 | 94.50 | NULL |
| Jack | 88.20 | 92.20 | 23 |
| Jim | 55.70 | 72.00 | 441 |
| June | 76.80 | 82.20 | 296 |
| Martin | 88.00 | 96.40 | 239 |
| Shelia | 81.10 | 78.40 | 191 |
| Steve | 63.00 | 45.00 | 204 |
+-------------+---------------+---------------+----------+
Window Frame Clause
SELECT player_name, 1st_qtr_score, 2nd_qtr_score,ROUND(VAR_SAMP(1st_qtr_score) OVER (ORDER BY player_name, 1st_qtr_score, 2nd_qtr_score ROWS UNBOUNDED PRECEDING)) AS VAR_SAMPFROM player_scoresORDER BY player_name;
+-------------+---------------+---------------+----------+
| player_name | 1st_qtr_score | 2nd_qtr_score | VAR_SAMP |
+-------------+---------------+---------------+----------+
| Eve | 91.50 | 88.10 | NULL |
| Jack | 90.10 | 78.00 | 1 |
| Jim | 75.00 | 68.90 | 84 |
| June | 81.00 | 87.30 | 61 |
| Martin | 98.80 | 95.10 | 87 |
| Shelia | 75.60 | 72.00 | 92 |
| Steve | 22.50 | 72.00 | 641 |
+-------------+---------------+---------------+----------+
Last modified: February 23, 2023