Calculate the overall average and save it in a variable, then compare each driver's average to the saved value : Variable « Select Clause « SQL / MySQL






Calculate the overall average and save it in a variable, then compare each driver's average to the saved value

       
 using a HAVING clause
mysql>
mysql>
mysql> CREATE TABLE mytable
    -> (
    ->  rec_id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ->  name            VARCHAR(20) NOT NULL,
    ->  trav_date       DATE NOT NULL,
    ->  miles           INT NOT NULL,
    ->  PRIMARY KEY (rec_id)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> INSERT INTO mytable (name,trav_date,miles)
    ->  VALUES
    ->          ('Ben','2010-11-30',152),
    ->          ('Suzi','2010-11-29',391),
    ->          ('Henry','2010-11-29',300),
    ->          ('Henry','2010-11-27',96),
    ->          ('Ben','2010-11-29',131),
    ->          ('Henry','2010-11-26',115),
    ->          ('Suzi','2010-12-02',502),
    ->          ('Henry','2010-12-01',197),
    ->          ('Ben','2010-12-02',79),
    ->          ('Henry','2010-11-30',203)
    -> ;
Query OK, 10 rows affected (0.00 sec)
Records: 10  Duplicates: 0  Warnings: 0

mysql>
mysql> SELECT @overall_avg := AVG(miles) FROM mytable;
+----------------------------+
| @overall_avg := AVG(miles) |
+----------------------------+
|              216.600000000 |
+----------------------------+
1 row in set (0.00 sec)

mysql> SELECT name, AVG(miles) AS driver_avg FROM mytable
    -> GROUP BY name
    -> HAVING driver_avg < @overall_avg;
+-------+------------+
| name  | driver_avg |
+-------+------------+
| Ben   |   120.6667 |
| Henry |   182.2000 |
+-------+------------+
2 rows in set (0.00 sec)

mysql>
mysql> drop table mytable;
Query OK, 0 rows affected (0.00 sec)

   
    
    
    
    
    
    
  








Related examples in the same category

1.Variables can be assigned values from arbitrary expressions.
2.Using variable the calculate the new column ID
3.Global System Variables versus System Variables at the Connection Level
4.Using SQL Variables in Queries
5.Returns all global variables and their settings
6.Return the session system variables
7.If you're retrieving the value of a global variable, you must also precede the variable name with the global keyword
8.If you want to retrieve a value for a session variable, rather than a global variable
9.Set the query_cache_limit variable to 1000000 at the global level
10.To set a session-level variable
11.Check the state of the variables with the following command:
12.Ordinary variables indicated by a prefixed @ sign.
13.System and server variables: Such variables contain states or attributes of the MySQL server.
14.Variable Assignment
15.Use of Variables
16.SQL variables hold single values.
17.If the variable has not been used previously, that value is NULL:
18.To set a variable explicitly to a particular value, use a SET statement.
19.Variable names are case sensitive:
20.SQL variables may be used to store the results of intermediate calculations.
21.Use a two-stage approach involving one query that selects the maximum size into a SQL variable, and another th
22.To use a SQL variable, store the highest price in it, then use the variable to identify the record containing
23.To find a value and save it in a variable
24.SELECT statement defines two variables
25.User Variables
26.Set a variable specifically.
27.Create the user variable PLAYERNO and initialize it with the value 7.
28.Can the result of a SELECT statement be assigned to a user variable
29.Compare decimal type variables
30.Create and set MySQL variable
31.Using concat to create value for variable
32.Using variable in where clause
33.Assin constant value to a variable
34.Assign the result from a sql to a variable
35.Assign a constant to a variable
36.Assign and create three variables inside one select statement
37.Assign the result of an aggregate function to a variable
38.Using variable to pass value between sql statement
39.Compare to a variable
40.Insert statement with variable
41.Assign value to a variable with :=
42.Using select ... into to assign value to variabls
43.A two-query approach
44.Advancing the rank only when values change
45.Use the differential as follows to produce team standings that include winning percentage and GB values
46.To calculate a standard deviation based on n-1 degrees of freedom instead
47.Calculating Linear Regressions or Correlation Coefficients
48.Assigning Ranks
49.Comparing a Table to Itself