Jak zgrupować pośrednie wyniki ?

0

id | customer_id | answer | name
---------------- | -------------------
1 | 1 | 3 | questionnarie_overall
1 | 1 | 3 | questionnarie_overall
1 | 1 | 2 | questionnarie_overall
1 | 1 | 1 | questionnarie_overall
1 | 1 | 1 | questionnarie_overall
1 | 2 | 3 | questionnarie_overall
1 | 2 | 3 | questionnarie_overall
1 | 2 | 2 | questionnarie_overall
1 | 2 | 3 | questionnarie_overall
1 | 2 | 3 | questionnarie_overall

Chciałem teraz policzyć średnią z wyników czyli dla klienta pierwszego AVG(answer) i dla kolejnych klientów i mam wynik w stylu

total null
2
3
3
4
4
4
4
5
5
5

Jak w tym samym zapytaniu teraz zrobić count na te rekordy żeby mieć informacje

id_count total
1 0
2 1
3 2
4 4
5 3

żebym wiedział ile było jedynek, dwójek trójek i tak aż do 5

SELECT ROUND(AVG(qa.answer)) AS total
FROM questionnaries_answers qa
WHERE qa.name = 'questionnarie_overall'
GROUP BY qa.visit_id
0

żebym wiedział ile było jedynek, dwójek trójek i tak aż do 5

SELECT answer, count(answer)
FROM twoja_tabela
GROUP BY answer
0

Coś w ten deseń:

SELECT 
     ROUND(AVG(qa.answer)) AS total
     ,sum(case when qa.answer=1 then 1 else 0 end) as odp1
     ,sum(case when qa.answer=2 then 1 else 0 end) as odp2
     ,sum(case when qa.answer=3 then 1 else 0 end) as odp3
     ,sum(case when qa.answer=4 then 1 else 0 end) as odp4
     ,sum(case when qa.answer=5 then 1 else 0 end) as odp5
FROM questionnaries_answers qa
WHERE qa.name = 'questionnarie_overall'
GROUP BY qa.visit_id

1 użytkowników online, w tym zalogowanych: 0, gości: 1