To display an average value of zero in that case, modify the query to test the value of AVG( ) with IFNULL( ) : AVG « Aggregate Functions « SQL / MySQL






To display an average value of zero in that case, modify the query to test the value of AVG( ) with IFNULL( )

      
mysql>
mysql> CREATE TABLE author
    -> (
    ->     a_id INT UNSIGNED NOT NULL AUTO_INCREMENT, # author ID
    ->     name VARCHAR(30) NOT NULL, # author name
    ->     PRIMARY KEY (a_id),
    ->     UNIQUE (name)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE book
    -> (
    ->     a_id INT UNSIGNED NOT NULL, # author ID
    ->     p_id INT UNSIGNED NOT NULL AUTO_INCREMENT, # book ID
    ->     title VARCHAR(100) NOT NULL, # title of book
    ->     state VARCHAR(2) NOT NULL, # state where purchased
    ->     price INT UNSIGNED, # purchase price (dollars)
    ->     INDEX (a_id),
    ->     PRIMARY KEY (p_id)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> INSERT INTO author (name) VALUES
    ->  ('Tom'),
    ->  ('Monet'),
    ->  ('Jack'),
    ->  ('Picasso'),
    ->  ('Mary')
    -> ;
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql>
mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'Database', 'IN', 34 FROM author WHERE name = 'Tom';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql>
mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'SQL', 'MI', 87 FROM author WHERE name = 'Tom';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql>
mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'MySQL', 'KY', 48 FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'XML', 'KY', 67    FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'Java', 'IA', 33   FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql>
mysql> INSERT INTO book (a_id,title,state,price)
    ->  SELECT a_id, 'HTML', 'NE', 64   FROM author WHERE name = 'Mary';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql>
mysql> SELECT author.name AS painter,
    -> COUNT(book.a_id) AS 'number of books',
    -> SUM(book.price) AS 'total price',
    -> IFNULL(AVG(book.price),0) AS 'average price'
    -> FROM author LEFT JOIN book ON author.a_id = book.a_id
    -> GROUP BY author.name;
+---------+-----------------+-------------+---------------+
| painter | number of books | total price | average price |
+---------+-----------------+-------------+---------------+
| Jack    |               3 |         148 |       49.3333 |
| Mary    |               1 |          64 |       64.0000 |
| Monet   |               0 |        NULL |        0.0000 |
| Picasso |               0 |        NULL |        0.0000 |
| Tom     |               2 |         121 |       60.5000 |
+---------+-----------------+-------------+---------------+
5 rows in set (0.00 sec)

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

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

mysql>

   
    
    
    
    
    
  








Related examples in the same category

1.AVG() Function averages the values returned by a specified expression.
2.Returning the Average, Minimum, and Total Values with AVG( ), MIN( ), and SUM( )
3.Get the average price
4.Average length
5.How much you paid for each author's books, in total and on average
6.Find the average sales amount per sales quarter.
7.How many miles did the drivers in the mytable table travel? What was the average miles traveled per day?