U MySql bazi imam sledeće tabele
users - tabela studenata
id | name
---+------
1 | Petar
2 | Marija
3 | Marko
4 | Ana
courses - tabela testova
id | name
---+------
1 | Test 1
2 | Test 2
questions - tabela sa pitanjima testova. Red cours_id označava kom testu pitanje pripada
id | cours_id | question
---+----------+--------------
1 | 1 | Test 1 - pitanje 1
2 | 1 | Test 1 - pitanje 2
3 | 1 | Test 1 - pitanje 3
4 | 1 | Test 1 - pitanje 4
5 | 2 | Test 2 - pitanje 1
6 | 2 | Test 2 - pitanje 2
7 | 2 | Test 2 - pitanje 3
8 | 2 | Test 2 - pitanje 4
cours_invitations - svaki student dobija pozivnicu za test. Red user_id predstavlja ID pozvanog korisnika.
cours_id predstavlja ID testa koji bi student trebao da uradi.
Kada red status ima vrednost 0 to znači da student nije počeo sa testom (na čekanju), a ako ima verdnost 1 to znači da je student započeo ili završio test.
id | user_id | cours_id | status
---+---------+----------+------
1 | 1 | 1 | 1
2 | 1 | 2 | 0
3 | 2 | 1 | 0
4 | 3 | 1 | 1
5 | 4 | 1 | 1
6 | 4 | 2 | 1
Primer: Petar i Ana su pozvani da urade Test 1 i Test 2, Marija i Marko su pozvani da urade samo Test 1. Petar je uradio Test 1 ali ne i Test 2, Marija nije uradila nijedan test, a Marko je uradio Test 1
courses_stats - su statistike testova koje su studenti uradili. Status predstavlja tačnost odgovora. 0 je za netačan, a 1 za tačan odgovor.
id | user_id | question_id | status
---+---------+-------------+-------
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 1 | 3 | 0
4 | 2 | 1 | 1
5 | 2 | 2 | 1
6 | 2 | 3 | 1
7 | 2 | 4 | 1
8 | 4 | 1 | 1
9 | 4 | 2 | 1
10 | 4 | 3 | 0
11 | 4 | 4 | 0
12 | 4 | 5 | 1
13 | 4 | 6 | 1
Primer: Petar je uradio 3 pitanja iz prvog test. Primetićete da nije uradio sva pitanja iz tog testa, a jedno je pritom netačno.
Marko je uradio sva pitanja tačno, a Ana je uradila sva pitanja iz prvog testa (pola netačno) i pola iz drugog teksta (sve tačno).
Potreban mi je upit uz pomoć koga bih dobio imena studenata, procenat završenih kurseva i procenat tačnih odgovora sa mogućnošću sortiranja po tim procentima.
Nešto ovako:
ime | zavrsteni testovi | zavrsena pitanja
-------+-------------------+----------------
Marko |100% |100%
Ana |100% |50%
Petar |50% |50%
Marija |0% |0%
Uspeo sam da nađem procenat završenih kurseva, ali ne i procenat tačnih odgovora. Znam čak i šta treba da radim samo ne znam kako.
Upit (uz još jednu tabelu koju koristim) trenutno izgleda ovako:
SELECT
`users`.`id`,
`users`.`name`,
`groups`.`name` as group_name,
ROUND(
100 * count(if(cours_invitations.status = '1', 1, null)) / count(cours_invitations.id)
) AS procenat_kurseva
FROM users
LEFT JOIN groups ON `users`.`group` = `groups`.`id`
LEFT JOIN cours_invitations ON `users`.`id` = `cours_invitations`.`user_id`
group by `users`.`id`
Može li mi neko pomoći sa ovim? Hvala unapred.