GROUP_CONCAT, CONCAT a funkcja agregująca SUM().

GROUP_CONCAT, CONCAT a funkcja agregująca SUM().
IN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Witam,

borykam się z problemem, mianowicie nie działa GROUP_CONCAT, jeśli dany użytkownik po zsumowaniu ma taką samą liczbę punktów, jak ktoś inny to powinni być w tym samym rekordzie.
Podgląd:

Kopiuj
SELECT
  GROUP_CONCAT(DISTINCT CONCAT(u.id,';', u.username) SEPARATOR ', ') AS users,
  a.category,
  (SELECT SUM(points) FROM `annon` WHERE uid = a.uid AND category = a.category) as scores
FROM `annon` as a
LEFT JOIN `users` as u ON a.uid = u.id
WHERE a.category = 'A'
GROUP BY scores, u.username
ORDER BY scores DESC
LIMIT 0,5

https://www.db-fiddle.com/f/pbHakSmezARjnLYkMkz3qB/0
Jak widać, Jacek i Tomek mają taką samą liczbę punktów, a są w osobnych rekordach. W czym tkwi problem?

Pozdrawiam.

BlackBad
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 454
1

Group by nie po username a po category:

Kopiuj
SELECT
  GROUP_CONCAT(DISTINCT CONCAT(u.id,';', u.username) SEPARATOR ', ') AS users,
  a.category,
  (SELECT SUM(points) FROM `annon` WHERE uid = a.uid AND category = a.category) as scores
FROM `annon` as a
LEFT JOIN `users` as u ON a.uid = u.id
WHERE a.category = 'A'
GROUP BY scores, a.category
ORDER BY scores DESC
LIMIT 0,5

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.