Lenguaje SQL de base de datos
Preguntas de práctica de SQL
Un estudiante - base de datos del curso
1 Consulta el número de estudiantes de los estudiantes que no tienen puntajes en los exámenes en el curso No. 7 p>
seleccione sno de sc donde cno='7' y la calificación es nula
2 Consulta el número de estudiantes cuyas calificaciones en el curso No. 7 están por encima de 90 puntos o por debajo de 60 puntos p>
seleccione sno de sc donde gradegt;90 o gradelt;60
3 Consulte los números y nombres de los cursos de todos los cursos cuyos nombres de cursos comiencen con la palabra "datos".
Seleccione cno, cname de c donde cname como 'datos'
4 Consulta las calificaciones promedio de todos los cursos para cada estudiante y genera el número de estudiante y la calificación promedio
seleccione sno, avg(grade) del grupo sc por sno
5 Consulta el número de materias optativas para cada curso y genera el número de curso y la cantidad de materias optativas.
Seleccione cno, count(*) del grupo sc por cno
6 Consulta el número de estudiante, nombre y sexo de los estudiantes que tomaron el curso N°7.
Selecciona s.sno, sname, ssex de s, sc donde s.sno=sc.sno y cno= '7'
7 Consulta la edad promedio de los estudiantes que toman el curso No 7 .
Seleccione avg(sage) de s, sc donde s.sno=sc.sno y cno = ‘7’
8 Consulta los números de cursos tomados por más de 30 estudiantes.
Seleccione sno del grupo sc al tener cno count(*)gt 30
9 Consulta el número de estudiantes que no han reprobado el examen hasta el momento
>a: seleccione sno de s donde sno no esté (seleccione sno de sc donde gradelt; 60)
b: seleccione sno del grupo sc teniendo sno que tenga min(grade)gt;=60
二
1 Encuentre el número de estudiante y las calificaciones del estudiante cuyo número de curso optativo es C2.
Seleccione sno, calificación de sc donde cno=’C2’
2 Encuentre el número de estudiante y el nombre del estudiante cuyo número de curso electivo es C4.
Seleccione s.sno, sname de s, sc donde s.sno=sc.sno y cno='C4'
3 Encuentre el número de estudiante del curso electivo llamado Matemáticas con nombre.
Selecciona s.sno, sname de s, sc, c
donde s.sno=sc.sno y c.cno=sc.cno y cname='Maths' p>
p>
4 Encuentre el número de estudiante del curso optativo número C2 o C4.
Seleccione sno distinto de sc donde cno in ('C2', 'C4')
O: seleccione sno distinto de sc donde cno='C2' o cno ='C4' 5 Encuentre el número de estudiantes con los números de cursos electivos C2 y C4.
Seleccione sno de sc donde cno ='C2' y sno in (
seleccione sno de sc donde cno = 'C4')6 Encuentre los nombres y nombres de los estudiantes que no tomando el curso C2 Edad
seleccione sname, sage de s donde sno no está (seleccione sno de sc donde cno='C2')
o:
seleccione sname, sage de s donde no existe (seleccione * de sc donde sc.sno=s.sno y cno='C2')
7 Encuentre los nombres de todos los estudiantes que tomaron el curso de base de datos. (Igual que 3)
Seleccione s.sno, sname de s, sc, c
donde s.sno=sc.sno y c.cno=sc.cno y cname = 'Base de datos'
8 Descubra los nombres de las chicas que reprobaron el curso de bases de datos
Anidamiento:
seleccione sname de s donde ssex = 'female' y sno in (seleccione sno de sc donde gradelt; 60 y cno in (seleccione cno de c donde cname='database'))
Conexión:
Seleccione sname de s,sc,c
donde s.sno=sc.sno y c.cno=sc.cno y ssex='female' y cname = 'database' y gradelt 609 Encuentre la calificación promedio de cada curso, genere el curso; nombre y calificación promedio
seleccione cname, avg(calificación) de sc, c donde c.cno =sc.cno grupo por sc.cno10 Encuentre la calificación promedio de cada estudiante y genere el nombre del estudiante y la calificación promedio
seleccione sname , avg(grade) from s , sc donde s.sno=sc.sno grupo por sc.sno
11 Encuentre el nombre del curso tomado por al menos 30 estudiantes
seleccione cname de c donde cno está (seleccione cno del grupo sc por cno teniendo count(*)gt;=30)
12 Encuentre los nombres de los estudiantes que no han tomado Menos de 3 cursos.
Seleccione sname de s donde está sno (seleccione sno del grupo sc por sno con recuento(*)gt;=3)
13 Descubra que las puntuaciones en cada curso no son bajo Nombres de estudiantes con una puntuación de 90 o superior.
Seleccione sname de s donde sno no está (seleccione sno de sc donde gradelt; 90)
14* Encuentre los nombres de los estudiantes cuyas calificaciones en el curso de la base de datos no sean inferiores a las puntuación media del curso.
Seleccione sname de s donde sno in (
Seleccione sno de sc , c donde sc.cno=c.cno y cname='database' y
Grado gt; (Seleccione avg(grado) de sc , c donde sc.cno=c.cno y cname='database' ) )
15 Encuentre la edad promedio y el número de estudiantes masculinos y femeninos en cada uno. departamento.
Seleccione sdept, ssex, avg(sage), count(*) de s
Agrupar por sdept, ssex
16 Descubra el Departamento de Informática (JSJ) El número de estudiante y nombre del estudiante con el promedio más alto del curso.
Seleccione sc.sno, sname de s, sc donde s.sno=sc.sno y sdept='JSJ'
Agrupe por sc.sno Teniendo promedio(calificación) =
( Seleccione el promedio superior (calificación) de sc, s donde s.sno=sc.sno y sdept='JSJ'
agrupe por sc.sno ordene por promedio(calificación) DESC) Tres clientes: la base de datos del producto incluye 3 tablas: KH, FP, YWY
1 Consulta el nombre y el número de oficina de un vendedor con un salario de entre 1000 y 3000 yuanes.
Seleccione Yname, Ono de YWY donde el salario es entre 1000 y 3000 e Ysex='Male'
2 Consulte el número de vendedores en cada oficina y genere el número de oficina y el número correspondiente de gente.
Seleccione Ono, cuente (*) del grupo YWY por Ono
3 Consulte el monto total comprado por cada cliente en mayo de 2002 y genere el número de cliente y el monto total correspondiente.
Seleccione Kno, suma(Fmoney) de FP donde fdate entre '2002.5.1' y '2002.5.31'
Agrupar por Kno
4 Consulta 2002 Todos los números de clientes con más de 5 compras en mayo, ordenados por número de cliente en orden ascendente.
Seleccione Kno de FP donde fdate entre '2002.5.1' y '2002.5.31'
Agrupe por Kno con recuento (*)gt; Realizar pedido por Kno ASC
5 Consulta el salario medio de los vendedores y vendedoras de cada oficina.
Seleccione Ono, Ysex, promedio (salario) del grupo YWY por Ono, Ysex
6 Consulte los números de clientes y los clientes que compraron productos al vendedor Wang Hailiang en mayo de 2002 Nombre, contacto número.
Seleccione Kno, Kname, teléfono de KH donde Kno está (
Seleccione kno de FP donde fdate entre '2002.5.1' y '2002.5.31' y
Yno=(seleccione Yno de YWY donde Yname = 'Wang Hailiang') 7 Consulta los números, nombres y salarios de todos los vendedores cuyo salario es superior al del vendedor número 1538.
Seleccione yno , Yname, salario de YWY donde salario gt;
(Seleccione salario de YWY donde Yno='1538' )
8 Consulta los números de todos los demás vendedores en la misma oficina que vendedor No. 1538, Nombre
Seleccione Yno , Yname de YWY donde Ynolt;gt;'1538' y Ono en (
Seleccione Ono de YWY donde Yno='1538' )
9 Consulta el número del vendedor con el mayor monto total de ventas
Selecciona Yno del grupo FP por Yno Teniendo suma(Fmoney) =
(Selecciona arriba 1 sum(Fmoney) from. FP group by Yno ORDER BY sum(Fmoney) DESC)
10 Consulta el número, nombre, salario de todos los vendedores y el salario promedio de otros vendedores con salarios más altos que él
Usar autoconexión
Seleccione y1.Yno, y1.Yname, y1.salary, avg(y2. salario) de YWY y1, YWY y2
Dónde y1.Ynolt;gt;y2 .Yno y y1.salary lt; y2.salary
Agrupar por y1.Yno
Sno salario sno salario
1 100 1 100
2 120 2 120
3 90 3 90
4 110 4 110 Hay una tabla en la base de datos de una determinada escuela secundaria: p>
Tabla de selección de cursos de estudiantes: consta de cinco atributos: tablero y código, número de estudiante de la clase, nombre, materia y grado. El modelo de relación es
SC(BJDM, BNXH, XSXM,. KM, CJ), entre los cuales (BJDM, BNXH) es el código principal.
Descripción: Cada alumno almacena un registro por cada materia. Hay tres materias: "Chino", "Matemáticas" y "Lengua Extranjera". 1 Encuentre el código de clase, el número de estudiantes y la calificación promedio de cada clase.
Seleccione BJDM, recuento (*), promedio (CJ) del grupo SC por BJDM
2 Encuentre el código de clase de cada estudiante, el nombre del estudiante, el número de materias del examen y la puntuación total.
Seleccione BJDM, XSXM, count(*), sum(CJ) de SC
Agrupe por BNXH
3 Genere una tabla correspondiente a cada estudiante A. El registro incluye: código de clase, nombre, puntajes de chino, puntajes de matemáticas y puntajes de idiomas extranjeros.
Método 1: Usar vista
crear vista v1 (bjdm, xsxm, yw, sx, wy) AS
seleccionar bjdm, xsxm, cj, 0, 0 de sc donde km='Chino'
unión
select bjdm , xsxm , 0 , cj , 0 de sc donde km='matemáticas'
unión
seleccione bjdm, xsxm, 0, 0, cj de sc donde km='idioma extranjero'seleccione bjdm, xsxm, suma(yw) como chino, suma(sx) como matemáticas, suma(wy) como idioma extranjero del grupo v1 por bjdm, xsxm
Método 2: Autoconexión
seleccione a.bjdm, a.xsxm, a.km, a.cj, b.km, b.cj , c.km, c.cj de sc a , sc b , sc c
donde a.bjdm=b.bjdm y a.bnxh= b.bnxh y b.bjdm=c. bjdm and b .bnxh= c.bnxh
and a.km='Chinese' and b.km='Mathematics' and c.km='Foreign Language' Método 3: Usar procedimientos almacenados (omitido)
4 Genere una tabla: cada estudiante con una puntuación inferior a 60 puntos corresponde a un registro, que incluye los campos: código de clase, nombre y puntuación más baja. Seleccione bjdm, xsxm, min(CJ) de sc donde gradelt; 60 grupo por bjdm, xsxm5 genera una tabla: un registro correspondiente a cada estudiante cuya puntuación sea inferior a 60 puntos, incluidos los campos: código de clase, nombre, calificación más alta, promedio. calificación.
Obtenga la puntuación promedio: cree la vista V1 (bjdm, bnxh, avg_cj) AS
seleccione bjdm, bnxh, avg(cj) desde sc donde bjdm, bnxh seleccione sc.bjdm, sc xsxm, max(cj), avg_cj de sc, V1
donde sc.bjdm=v1.bjdm y sc.bnxh=V1.bnxh y cjlt; bjdm, sc.xsxm6 genera una tabla: un registro para cada estudiante con una puntuación de no menos de 60 puntos, incluidos los campos: código de clase, nombre, calificación promedio. seleccione bjdm, xsxm, avg(cj) de sc
donde sno no está (seleccione sno de sc donde gradelt; 60)
agrupe por bjdm, xsxm7 genera una tabla: cada uno estudiante corresponde a un registro, incluyendo los campos: código de clase, nombre y calificación promedio después de eliminar la puntuación más baja.
Método 1:
Obtener la puntuación más baja de cada estudiante:
crear la vista V1 (bjdm, bnxh, min_cj) como
seleccione bjdm, bnxh, min(cj) de sc grupo por bjdm, bnxhselect sc.bjdm, sc.xsxm, avg(cj) de sc, v1
donde sc.bjdm=v1.bjdm y sc. bnxh=v1.bnxh y sc.cj lt;gt; v1.min_cj
Agrupar por bjdm, método dos de bnxh:
seleccione sc.bjdm, sc.xsxm, (sum( cj) – min(cj) ) / count(*) de sc
grupo por bjdm, bnxh8 genera una tabla: cada materia corresponde a un registro, incluidos los campos: materia, después de eliminar la puntuación más baja Calificación promedio .
Método 1:
Obtenga la puntuación más baja para cada recorrido:
cree la vista V1 (km, min_cj) como
seleccione km , min(cj) de sc grupo por km
seleccione sc.km , avg(cj) de sc , v1
donde sc.km=v1.km y sc.cj lt ;gt; v1.min_cj
agrupar por sc.km
Método 2:
seleccionar km, (suma(cj) – min(cj))/ count(*) from sc
grupo por km Suplemento 9: Tabla de salida: Cada materia corresponde a un registro, que incluye campos: materia, puntuación promedio después de eliminar una puntuación mínima y una puntuación máxima.
seleccione km, (suma(cj) – min(cj) – max(cj) )/count(*) de sc
agrupe por km Las cinco bases de datos almacenan la década de 1990 de una determinada universidad La situación de los exámenes de inglés CET-4 y CET-6 desde 2018, y la normativa es la siguiente:
1 Los exámenes CET-4 y CET-6 se realizan dos veces al año en el mes de junio y diciembre respectivamente;
2 CET-4 Los estudiantes que no hayan aprobado no pueden solicitar el CET-6;
3 Siempre que no aprueben un determinado nivel de examen, pueden realizar la prueba nuevamente;
4. Una vez que aprueban un determinado nivel de examen, no pueden volver a postularse para el mismo nivel;
5 Se permite registrarse pero no presentarse. el examen.
Hay dos tablas en la base de datos y los patrones de relación correspondientes son los siguientes:
Tabla de estudiantes: S (Sno, Sname, Ssex, Sage, Sdept), donde Sno es la clave principal.
Mesa de examen: E (Sno, Año, Mes, Nivel, Grado), número de alumno, año, mes, nivel, grado.
Entre ellos (Sno, Año, Mes) se encuentra el código principal. 1. Conoce el número de referencias y puntuaciones medias de cada examen CET-4 y CET-6 (no se contabilizarán los que se inscribieron pero no realizaron el examen)
selecciona año, mes, nivel , count(*), avg (nota)
grupo por año, mes, nivel2. Encuentra el departamento con mayor puntuación media en cada examen CET-4 (los que se inscribieron pero no realizaron el examen). no se contabilizarán).
A: Seleccione sdept de s, e donde s.sno=e.sno
Donde nivel=4
Agrupar por sdept
Tener promedio(calificación)gt;=ALL(
Seleccione promedio(calificación) de s, e donde s.sno=e.sno donde nivel=4 Agrupar por departamento)B: Seleccione el 1 departamento superior de s , e donde s.sno=e.sno
Donde nivel=4
Agrupar por sdept
Ordenar por (avg(grade) desc
3. Conoce el número de alumno, nombre y sexo de los alumnos que han superado el CET-6 (mediante el método de conexión)
selecciona s.sno, sname, ssex de s, e
p>donde s.sno=e.sno y nivel=6 y gradogt;=60
4 Descubra el número de estudiantes que tomaron tanto el Nivel 4 como el Nivel 6. exámenes en el mismo año
1) seleccione sno de E
donde (nivel=4 y calificación;=60) o nivel=6
grupo por año con recuento(*) gt;=22) seleccione sno de E )5 Descubra el número de estudiantes que aprobaron el examen CET-6 después de realizar solo un examen
seleccione sno de E
donde nivel=6
agrupar por sno
tener recuento(*)=1 está mal, ¿piensa por qué? 1) seleccione sno de E
donde nivel=6
grupo por sno
con recuento(*)=1 y máximo(grado)gt;=602 ) seleccione sno de E donde nivel=6 y gradogt;=60 y sno en (
seleccione sno de E donde nivel=6 grupo por sno que tenga recuento(*)=1)
6. Conoce el número de alumnos que no han superado el examen CET-4 hasta el momento (debe incluir a los que aún no lo han hecho o a los que lo han hecho pero no lo han superado)
seleccione sno de E donde nivel =4
grupo por sno
teniendo max(grado)lt;60
Unión
Seleccione sno de s donde sno no esté (seleccione sno de E)
7. Encuentre el año y mes del examen con la menor cantidad de personas calificadas en el examen CET-6 (si hay paralelos, enumere todos). utilizar una declaración SQL).
Seleccione año, mes de E
Donde nivel = 6 y calificacióngt;=60
Agrupe por año, mes
Teniendo recuento (*) lt;=all
(Seleccione recuento (*) de E donde nivel=6 y notagt;=60 grupo por año, mes)
Suplemento: Consulta de cada pase de curso tasa.
1 Obtener el número de materias optativas para cada curso 2 Obtener el número de personas que aprobaron cada curso 3 El número de personas que aprobaron cada curso/el número de materias optativas para cada curso 1create view v_all( cno , cnt ) como seleccionar cno, contar(*) desde sc grupo por cno
2crear vista v_pass(cno, cnt_pass) como seleccionar cno, contar(*) desde sc donde gradegt;=60
agrupar por cno
3 seleccione cno, cnt_pass*1.0 / cnt de v_all, v_pass donde v_all.cno = v_pass.cno