Consulta una subconsulta con una declaración IF.
Necesito obtener los datos de religión (agama) de los estudiantes que se distribuyen según el año de registro. La religión de los estudiantes se reconoce por la clase de asignaturas elegidas por el estudiante.
Por favor, dime qué está mal en mi consulta con subconsulta.
SELECT
`subject_name` agama,
SUM(IF(YEAR(`reg_date`)=2017,1,0)) ts3,
SUM(IF(YEAR(`reg_date`)=2018,1,0)) ts2,
SUM(IF(YEAR(`reg_date`)=2019,1,0)) ts1,
SUM(IF(YEAR(`reg_date`)=2020,1,0)) ts
FROM (
SELECT DISTINCT `st`.`reg_id`, `st`.`stname`, `st`.`reg_date`, `sj`.`subject_name`
FROM `students` `st`
LEFT JOIN `class` `cl` USING (`reg_id`)
LEFT JOIN `subject` `sj` USING (`subject_id`)
WHERE `st`.`status` = 'A'
AND `sj`.`subject_name` LIKE '%agama%')
Obtengo un error de sintaxis que apunta al final de la consulta.
Error en la consulta (1064): Error de sintaxis cerca de ” en la línea 13
Si ejecuto la subconsulta por separado, obtengo una tabla de estudiantes con su religión como quiero, pero no dividida por año de registro.
Creo que hay una regla que desconozco sobre las subconsultas en SQL (MySQL).
Actualizado:
Muestra de la tabla que necesito crear:
Agama 2017 2018 2019 2020
Islam 18 11 15 12
Kristen 20 18 7 12
Katholik 22 26 11 16
Hindu 2 0 0 0
Buddha 28 26 16 20
Muestra del resultado de la subconsulta si se ejecuta por separado:
reg_id stname reg_date subject_name
---------+-------------------------+-------------+----------------------------
52017032 YOSUA MARCELL RUHUKAIL 2017-09-18 PENDIDIKAN AGAMA KRISTEN
52017035 HESTI ERINA TOBEOTO 2017-09-18 PENDIDIKAN AGAMA KRISTEN
52017014 GERALDI RADITYO WIWONO 2017-09-18 PENDIDIKAN AGAMA KATHOLIK
52017026 RIVALDO WINENGKO 2017-09-18 PENDIDIKAN AGAMA KATHOLIK
52017009 ARFIANDO KARSON EUGENA 2017-09-18 PENDIDIKAN AGAMA BUDDHA
52017016 HO LUSI 2017-09-18 PENDIDIKAN AGAMA BUDDHA
52017027 RONALD KWANDY 2017-09-18 PENDIDIKAN AGAMA BUDDHA
52017031 YESSY 2017-09-18 PENDIDIKAN AGAMA BUDDHA
51017002 ALIFKA GAUNG H 2017-09-18 PENDIDIKAN AGAMA ISLAM
51017003 AYU ARIYANINGSIH 2017-09-18 PENDIDIKAN AGAMA ISLAM
davy.ai
Hay un par de problemas con la consulta proporcionada:
Esto debe devolver una tabla con dos columnas:
subject_name
yyear
. Luego puedes utilizar esto como una subconsulta en la consulta original para obtener el número de estudiantes por religión por año:Esto debe darte la tabla deseada con datos de religión de los estudiantes distribuidos por año de registro.