Essa foi minha resposta ao exercício:
select c.nome, count(m.id) from curso c
-> join matricula m on m.curso_id = c.id
-> where m.tipo in ('PAGA_PF', 'PAGA_PJ')
-> group by c.nome;
Esse foi o resultado:
+---------------------------------+-------------+
| nome | count(m.id) |
+---------------------------------+-------------+
| Desenvolvimento web com VRaptor | 1 |
| Scrum e métodos ágeis | 1 |
| SQL e banco de dados | 2 |
+---------------------------------+-------------+
3 rows in set (0.00 sec)
Eu imaginei que uma alternativa seria juntar o "in" com o "like", tentei um "like in" (rsrs), não deu certo, pesquisei no google e encontrei isso:
https://stackoverflow.com/questions/1127088/mysql-like-in
"...A REGEXP might be more efficient, but you'd have to benchmark it to be sure, e.g..."
O resultado foi essa query:
select c.nome, count(m.id) from curso c
-> join matricula m on m.curso_id = c.id
-> where m.tipo regexp 'PF|PJ'
-> group by c.nome;
Que gerou o mesmo resultado:
+---------------------------------+-------------+
| nome | count(m.id) |
+---------------------------------+-------------+
| Desenvolvimento web com VRaptor | 1 |
| Scrum e métodos ágeis | 1 |
| SQL e banco de dados | 2 |
+---------------------------------+-------------+
3 rows in set (0.00 sec)