For getting average, use AVG() and use it with DISTINCT to calculate from distinct records. Let us first create a table −
mysql> create table DemoTable1934 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affected (0.00 sec)
Insert some records in the table using insert command −
mysql> insert into DemoTable1934 values('Chris',56); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1934 values('Chris',56); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1934 values('David',78); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1934 values('David',78); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1934 values('Carol',45); Query OK, 1 row affected (0.00 sec)
Display all records from the table using select statement −
mysql> select * from DemoTable1934;
This will produce the following output −
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 56 | | Chris | 56 | | David | 78 | | David | 78 | | Carol | 45 | +-------------+--------------+ 5 rows in set (0.00 sec)
Here is the query to select average from distinct column of table −
mysql> select avg(tbl.StudentMarks) from ( select distinct StudentName,StudentMarks from DemoTable1934 ) as tbl;
This will produce the following output −
+-----------------------+ | avg(tbl.StudentMarks) | +-----------------------+ | 59.6667 | +-----------------------+ 1 row in set (0.00 sec)