I’m trying to find an average of 2 items in my SQL table, an average commission of people who receive a commission from the table, and an average commission, including those who do not get a commission (null).
My code:
SELECT AVG(COMM) AVG_COMM, AVG(COMM) AVEALL
    FROM STAFF
        WHERE COMM IS NOT NULL;
This is what I get:
  AVG_COMM     AVEALL
---------- ----------
      97.5       97.5
This is what I want:
  AVG_COMM     AVEALL
---------- ----------
      97.5       27.851
This is what I want, the AVEALL is an average commission of everyone, including those with a null value.
Thanks.
Advertisement
Answer
You can use COALESCE to convert NULL values to 0 and then take the average to get your AVEALL value:
SELECT AVG(COMM) AVG_COMM, AVG(COALESCE(COMM, 0)) AVEALL FROM STAFF