Я использую MySQL Server Management Studio и пытаюсь создать взвешенную сумму для категоризации песен. Вот мой ЗЕЬЕСТ:Группировка взвешенного подсчета в MySQL с использованием CASE
SELECT
TSongs.intSongID
,TSongs.strSongName
,CASE
WHEN TUFS.intSortOrder = 1 THEN 5
WHEN TUFS.intSortOrder = 2 THEN 3
WHEN TUFS.intSortOrder = 3 THEN 1
ELSE 0
END AS intFavoriteSongCount
FROM
TSongs
LEFT OUTER JOIN TUserFavoriteSongs AS TUFS
ON(TSongs.intSongID = TUFS.intSongID)
GROUP BY
TSongs.strSong
,TSongs.intSongID
,TUFS.intSortOrder
ORDER BY
intFavoriteSongCount
Взвешивание происходит следующим образом: Каждый «пользователь» в базе данных есть любимые песни, отсортированные по intSortOrder. В идеале вывод этой инструкции SELECT показывал каждую песню один раз, а также сумму суммарного взвешенного итога для песни. Как и сейчас, она показывает каждую песню несколько раз, один раз за каждый раз, когда она появляется в «любимом» списке пользователей.
Вот изображение, чтобы объяснить, что текущий вопрос:
Как я мог остановить это происходит?
К сожалению, этот пример не выполняется, поскольку strSong и intSortOrder должны находиться в разделе GROUP BY или запрос не будет запущен. Точная ошибка буквально «Столбец» TSongs.strSong «недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY». Если я добавлю все столбцы в раздел GROUP BY, то запрос будет точно таким же, как тот, который я использую. – user3530169