1. Preguntas comunes de la entrevista SQL: preguntas clásicas 50.
Desde Zhihu compartiendo https://zhuanlan.zhihu.com/p/38354000 (algunos temas)
Estructura de la mesa:
Tabla del alumno: alumno (número de alumno, nombre del alumno, fecha de nacimiento, sexo)
Tabla de puntaje: puntaje (número de estudiante, número de curso, puntaje)
Tabla del curso: curso (número del curso, nombre del curso, número del profesor)
Tabla del profesor: profesor (número de profesor, nombre del profesor)
1. Consulte los puntajes más altos y más bajos en cada materia, que se muestran en la siguiente forma: número de curso, puntaje más alto, puntaje más bajo (agregación agrupada por grupo)
seleccione courseid, max (puntaje), min (puntaje) del grupo de puntajes por curso;
2. Consulte el número de estudiantes y el puntaje promedio de los estudiantes cuyo puntaje promedio es mayor a 60 puntos
seleccione stuid, avg (puntaje) del grupo de puntajes por stuid que tenga un promedio (puntaje)> 60;
3. Revise la lista de estudiantes del mismo nombre del mismo sexo y cuente el número de estudiantes con el mismo nombre.
seleccione stuname, count (stuid) del grupo de estudiantes por stuname que tiene count (stuid)> 1;
4. Consulte el puntaje promedio de cada curso, los resultados se ordenan en orden ascendente de puntaje promedio, y cuando el puntaje promedio es el mismo, se ordenan en orden descendente por número de curso
seleccione courseid, promedio (puntaje) del grupo de puntajes por orden de curso por promedio (puntaje), desc. de curso;
6. Consultar los números de estudiantes y las calificaciones promedio de dos o más cursos reprobados
seleccione stuid, avg (score) como avg_score de score donde score <60 grupo por stuid que cuenta (courseid)> = 2;
7. Consulte la identificación del estudiante y el nombre de todos los estudiantes cuyas calificaciones sean inferiores a 80
seleccione student.stuid, student.stuname del estudiante donde el estudiante no está ( seleccione estudiante diferente del puntaje donde puntaje> 80 );
8. Lista de estudiantes nacidos en 1990 (stubirtthdate es un tipo de fecha)
seleccione stuid, stuname del estudiante donde año (fecha de nacimiento) = 1990;
9)
Pregunta TOPN para consultar el registro con la puntuación más alta en cada materia (subconsulta asociada )
seleccione * de puntaje como a donde puntaje = (seleccione máximo (puntaje) de puntaje como b donde a.courseid = b.courseid);
El orden anterior de subconsultas relacionadas
1. seleccione * de la puntuación 2. seleccione max (puntuación) de la puntuación donde courseid = 0001 3. seleccione * de la puntuación donde score = 81 y courseid = 0001
Pregunta TOPN para verificar los dos registros principales de cada sección (unión)
(seleccione * del puntaje donde courseid = 0001 ordenar por puntaje desc límite 2) unión (seleccione * del puntaje donde courseid = 0002 ordenar por puntaje desc límite 2) unión (seleccione * del puntaje donde cursoid = 0003 ordenar por puntaje desc límite 2) ;
10. Consulta el número de transeúntes y transeúntes para cada curso (expresión de caso)
seleccione courseid, suma (caso cuando puntaje> = 60 luego 1 más 0 final) como jigerenshu, suma (caso cuando puntaje <60 luego 1 más 0 final) como bujigerenshu del grupo de puntaje por curso;
11. Use las secciones [100-85], [85-70], [70-60], [<60] para contar los puntajes de cada materia, respectivamente: el número de personas en cada sección, el número de curso y el nombre del curso ( expresión de caso )
seleccione score.courseid, course.coursename, sum (caso cuando el puntaje esté entre 85 y 100 y luego 1 finalice 0) como '[85-100]', sum (caso cuando el puntaje esté entre 70 y 85 y luego 1 finalice 0) como ' [70-85] ', suma (caso cuando el puntaje está entre 60 y 70 y luego 1 más 0 finaliza) como' [60-70] ' del puntaje derecho unirse al curso en score.courseid = curso.courseid grupo por curso;
12. Intercambio de filas y columnas.
Consulte https://mp.weixin.qq.com/s/6Kll4Q6Xp37i2PiLUh4cMA
La siguiente es la tabla de puntaje del alumno (puntaje del nombre de la tabla, nombre de la columna: número del alumno, número del curso, calificación)
Use sql para convertir la fila de la tabla en la siguiente estructura de tabla
seleccione stuid, max (case Courseid cuando '0001' luego puntúa más 0 final) como '课程 号 0001', max (case courseid cuando '0002' luego califica otro 0 end) como '课程 号 0002', max (case Courseid cuando '0003' luego puntaje más 0 final) como '课程 号 0003' del grupo de puntaje por estudiante;
En segundo lugar, el reclutamiento de la escuela de Internet SQL escrito clásico 50 preguntas y análisis de respuestas
Desde Zhihu compartiendo https://zhuanlan.zhihu.com/p/53302593 (algunos temas)
Estructura de la mesa
Mesa de estudiante
Mesa del profesor
Horario del curso
Transcripción SC
1. Consulte los números de todos los estudiantes con calificaciones más altas en el curso "01" que en el curso "02" (genere una nueva conexión de mesa)
seleccione t1.sid distinto como sid desde (seleccione * desde sc donde cid = '01 ') como t1 combinación izquierda (seleccione * desde sc donde cid = '02') como t2 en t1.sid = t2.sid donde t1.score > t2.score;
2. Consulte la identificación del estudiante y el nombre del estudiante que aprendió el número "01" y también el número "02"
seleccione sid, sname del estudiante donde sid IN (seleccione `sid` del grupo SC por` sid` #grouping para asegurarse de que los estudiantes 01 y 02 cursos hayan aprendido el conteo (if (cid = '01', score, null))> 0 y cuenta (if (cid = '02', score, null))> 0);
3. Consultar la identificación del estudiante y el nombre de todos los estudiantes con menos de 60 puntos en el curso;
seleccione s_sid.`sid`, nombre.alumno from (seleccione `sid` distinto del grupo sc por` sid` con max (puntaje) <60) s_sid se unió al estudiante en s_sid.`sid` = estudiante.`sid`;
4. Consulte la identificación del estudiante y el nombre de los estudiantes que no han completado todos los cursos;
seleccione ssid.`sid`, nombre.alumno from (seleccione `sid` del grupo sc por` sid` teniendo cuenta (`score`) <(seleccione cuenta (*) del curso)) ssid izquierda unirse al estudiante en ssid.`sid `= estudiante` sid`;
5. Consulte la identificación del estudiante y el nombre de al menos una clase con el mismo número de clase que el estudiante con el número de clase "01"
seleccione sc.sid distinto de ( seleccione cid de sc donde sid = '01 ' ) t1 se une a sc en t1.cid = sc.cid;
6. Consulte los números de estudiantes y los nombres de otros estudiantes cuyos cursos son los mismos que los de los estudiantes con el número "01"
seleccione t1.`sid`, student.sname from (seleccione sc`sid` from ( seleccione cid from sc donde `sid` = 01 ) t1 se unió a sc en t1.`cid` = sc`cid` grupo por` sid` teniendo cuenta (sc.cid distinto) = (seleccione cuenta (cid distinto) de sc donde sid = '01')) t1 dejó unirse al estudiante en t1.`sid` = estudiante `sid`;
7. Consulte los números, nombres y calificaciones promedio de los estudiantes que reprobaron dos o más cursos.
seleccione ssid.`sid`, student.sname, ssid.`avg (score) ` de ( seleccione sid, avg (score) del grupo sc por sid teniendo cuenta (if (score <60, score, NULL))> = 2 ) ssid dejó unirse al alumno en ssid`sid` = alumno`sid`;
8. Consulte la información del alumno del segundo al tercer lugar en todos los cursos y los resultados del curso ( función de ventana )
seleccione `sid`, rank_num, score,` cid` de ( select rank () over (PARTITION by `cid` order by score desc) como rank_num, ` sid`, `score`,` cid` from sc ) t donde rank_num en (2,3);
9. Cuente el número de estudiantes en cada grado de cada grado: número de curso, nombre del curso, [100-85], [85-70], [70-60], [0-60] y el porcentaje
seleccione sc`cid`, cname, count (if (puntaje entre 85 y 100, score, NULL)) / count (sid) , count (if (puntaje entre 70 y 85, sid, nulo)) / count (sid) , count (if (puntaje entre 60 y 70, sid, null)) / count (sid) , count (if (puntaje entre 0 y 60, sid, null)) / count (sid) desde sc izquierda unirse al curso en sc. `cid` = curso`. grupo cid` por sc`cid`;
10. Consultar el puntaje promedio y la clasificación del alumno ( función de ventana )
seleccione sid, avg_score, rank () over (ordenar por avg_score desc) de (select sid, avg (score) como avg_score del grupo sc por `sid`) t;
11. Consulta los tres registros principales de cada tema ( función de ventana )
seleccione * de (seleccione `cid`,` sid`, rank () over (PARTITION by `cid` order by score desc) como rank_num from sc) t donde rank_num <= 3;
12. Verifique la edad de cada estudiante (curdate ())
seleccione sid, sname, year (curdate ()) - year (sage) como edad del estudiante;
2020.4.19 15:00