Запрос SQL COUNT, возвращающий NULL при использовании временной таблицы - PullRequest
0 голосов
/ 24 октября 2019

Я использую следующий код, чтобы попытаться вернуть средний доход в зависимости от количества песен в альбоме.

WITH Album_Tracks AS (
   SELECT COUNT(*) AS "#ofTracks", SUM(invoice_items.UnitPrice) AS "Album_Revenue"
   from tracks
   LEFT JOIN invoice_items ON invoice_items.trackID = tracks.trackID
   GROUP BY Albumid
)

SELECT #ofTracks, AVG(Album_Revenue)
FROM Album_Tracks
GROUP BY #ofTracks
ORDER BY #ofTracks DESC

Проблема, с которой я сталкиваюсь, заключается в том, что "количество треков"столбец во временной таблице 'Album_Tracks' возвращает столбец с NULL-значениями, когда я не выбираю все данные из таблицы.

Как при этом: SELECT * FROM Album_Tracks возвращает значения, но SELECT #ofTracks FROM Album_Tracks возвращает тольконулевые значения.

Я не уверен, что проблема в моем коде.

Ожидается увидеть: Пример 1

Но я получаю: Пример 2

В первом примере заказ не был включен.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Попробуйте просто:

SELECT #ofTracks

Вернется NULL. #ofTracks заключите в двойные кавычки или в кавычки или квадратные скобки:

SELECT "#ofTracks", AVG(Album_Revenue) FROM Album_Tracks
GROUP BY "#ofTracks"
ORDER BY "#ofTracks" DESC
0 голосов
/ 24 октября 2019

просто предложение
старайтесь избегать недопустимого символа (в названии таблицы и столбца) как + - ? ! * @ % ^ & # = / \ : " '

  WITH Album_Tracks AS (
      SELECT COUNT(*) AS NumOfTracks
          , SUM(invoice_items.UnitPrice) AS Album_Revenue 
      from tracks
      LEFT JOIN invoice_items ON invoice_items.trackID = tracks.trackID
      GROUP BY Albumid
  )
  SELECT NumOfTracks, AVG(Album_Revenue) F
  ROM Album_Tracks
  GROUP BY NumOfTracks
  ORDER BY NumOfTracks DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...