1
+ const mysql = require ( 'mysql2/promise' ) ;
2
+
3
+ const connect = async ( ) => {
4
+ try {
5
+ const connection = await mysql . createConnection ( {
6
+ host : 'localhost' ,
7
+ user : 'root' ,
8
+ password : 'Secur3MyS4QL' ,
9
+ database : 'escuela'
10
+ } ) ;
11
+
12
+ console . log ( 'Conexión correcta' ) ;
13
+
14
+
15
+ //-- Nota media
16
+ const sql1 = `SELECT AVG(mark) FROM marks WHERE subject_id=1;` ;
17
+ const [ result1 ] = await connection . execute ( sql1 ) ;
18
+ console . log ( '------Nota-media-asignatura-1------' ) ;
19
+ console . log ( result1 ) ;
20
+
21
+ //-- Total alumnos
22
+ const sql2 = `SELECT COUNT(*) FROM students;` ;
23
+ const [ result2 ] = await connection . execute ( sql2 ) ;
24
+ console . log ( '------Total-alumnos------' ) ;
25
+ console . log ( result2 ) ;
26
+
27
+ //-- Listar campos de la tabla students_groups
28
+ const sql3 = `SELECT * FROM students_groups;` ;
29
+ const [ result3 ] = await connection . execute ( sql3 ) ;
30
+ console . log ( '------Campos-de-la-tabla-groups------' ) ;
31
+ console . log ( result3 ) ;
32
+
33
+ //-- Eliminar todas las notas > 5 del año pasado
34
+ // const sql4 = `DELETE FROM marks WHERE (mark > 5) AND (date < curdate() AND date > DATE_SUB(NOW(),INTERVAL 1 YEAR));`;
35
+ // const [result4] = await connection.execute(sql4);
36
+ // console.log('Notas > 5 del año pasado eliminadas');
37
+
38
+ //-- Listar estudiantes del año en curso
39
+ const sql5 = `SELECT * FROM students WHERE year = YEAR(NOW());` ;
40
+ const [ result5 ] = await connection . execute ( sql5 ) ;
41
+ console . log ( '------Estudiantes-del-año-en-curso------' ) ;
42
+ console . log ( result5 ) ;
43
+
44
+ //-- Calcular el número de profes por asignatura
45
+ const sql6 = `SELECT subject_id, COUNT(*) FROM teachers GROUP BY subject_id;` ;
46
+ const [ result6 ] = await connection . execute ( sql6 ) ;
47
+ console . log ( '------Profes-por-asignatura------' ) ;
48
+ console . log ( result6 ) ;
49
+
50
+ //-- Obtén el id y la nota de los alumnos que tengan un id entre 1 y 20,
51
+ //-- o que tenga una nota mayor de 8 y la nota tenga fecha del año pasado.
52
+ const sql7 = `SELECT student_id, mark FROM marks WHERE (student_id BETWEEN 1 AND 20) OR (mark > 8) AND (date BETWEEN curdate() AND DATE_SUB(NOW(),INTERVAL 1 YEAR));` ;
53
+ const [ result7 ] = await connection . execute ( sql7 ) ;
54
+ console . log ( '------ID-entre-1y20-O-nota>8-del-año-pasado------' ) ;
55
+ console . log ( result7 ) ;
56
+
57
+ //-- Media de las notas que se han dado en el último año por asignatura.
58
+ const sql8 = `SELECT subject_id,AVG(mark) FROM marks WHERE (date BETWEEN DATE_SUB(NOW(),INTERVAL 1 YEAR) AND curdate()) GROUP BY subject_id;` ;
59
+ const [ result8 ] = await connection . execute ( sql8 ) ;
60
+ console . log ( '------Media-notas-ultimo-año-por-asignatura------' ) ;
61
+ console . log ( result8 ) ;
62
+
63
+ //-- Media de las notas que se han dado en el último año por alumno.
64
+ const sql9 = `SELECT student_id,AVG(mark) FROM marks WHERE (date BETWEEN DATE_SUB(NOW(),INTERVAL 1 YEAR) AND curdate()) GROUP BY student_id;` ;
65
+ const [ result9 ] = await connection . execute ( sql9 ) ;
66
+ console . log ( '------Media-notas-ultimo-año-por-alumno------' ) ;
67
+ console . log ( result9 ) ;
68
+
69
+
70
+ } catch ( err ) {
71
+ console . log ( err ) ;
72
+ await connection . end ( ) ;
73
+ }
74
+ } ;
75
+
76
+ connect ( ) ;
0 commit comments