Preguntas y respuestas de la entrevista de consulta SQL
Preguntas y respuestas de la entrevista de consulta SQL
El lenguaje SQL es un lenguaje de programación y consulta de bases de datos, que se utiliza para acceder a datos y consultar, actualizar y administrar sistemas de bases de datos relacionales; extensión del archivo de script. A continuación se muestran las preguntas y respuestas de la entrevista de consulta SQL que recopilé. Le invitamos a leerlas.
Preguntas y respuestas de la entrevista de consulta SQL 1
1. Una pregunta de la entrevista de declaración SQL, sobre el contenido del grupo por tabla:
2005-05-09 Ganar
p>2005-05-09 Ganar
2005-05-09 Perder
2005-05-09 Perder
2005 -05-10 Win
2005-05-10 Negativo
2005-05-10 Negativo
Si desea generar los siguientes resultados, ¿cómo debería hacerlo? escribir la declaración SQL
Resultado
2005-05-09 2 2
2005-05-10 1 2
-- -------- -------------------------------
crear tabla #tmp (rq varchar(10),shengfu nchar(1))
insertar en valores #tmp('2005-05-09','win')
insertar en valores #tmp ('2005-05-09' ,'win')
insertar en valores #tmp('2005-05-09','negative')
insertar en valores #tmp ('2005-05-09' ,'negative')
insertar en valores #tmp('2005-05-10','win')
insertar en valores #tmp ('2005-05-10' ,'negativo')
insertar en valores #tmp('2005-05-10','negativo')
1)seleccione rq, sum(caso cuando shengfu='win ' entonces 1 más 0 finaliza)'win',sum(caso cuando shengfu='negativo' entonces 1 más 0 finaliza)'negativo' del grupo #tmp por rq
2) seleccione N.rq,N .win,M.negative de (
seleccione rq,win=count(*) de #tmp donde shengfu='win'group by rq)N unión interna p>
(seleccione rq,negative=count(*) de #tmp donde shengfu='negative'group by rq)M en N.rq=M.rq
3)seleccione a.col001 ,a.a1 gana,b. b1 negativo de
(seleccione col001,count(col001) a1 de temp1 donde col002='win' grupo por col001) a,
(seleccione col001,count(col001) b1 de temp1 donde col002='negativo' grupo por col001) b
donde a.col001=b.col001
2. Pregunte acerca de una consulta de declaración SQL pregunta encontrada en la entrevista
p>Hay tres columnas A, B y C en la tabla. Esto se implementa mediante declaraciones SQL: cuando la columna A es mayor que la columna B, seleccione la columna A; seleccione la columna B. Cuando la columna B es mayor que la columna C, seleccione la columna A.
Seleccione la columna B; de lo contrario, seleccione la columna C.
------------------------------------------- --
seleccionar (caso cuando a>b luego a else b finaliza),
(caso cuando b>c luego b esle c finaliza)
desde table_name
p>
3. Pregunta de la entrevista: ¿Una declaración SQL para determinar la fecha?
Saque todos los registros de la tabla tb_send cuya fecha (campo SendTime) sea la día actual? (El campo EnviarHora es del tipo fechahora, incluida la fecha y la hora)
---------------------- ----------------- -
Seleccione * de tb donde dateiff(dd,SendTime,getdate())=0
4 Hay una tabla con 3 campos: chino, matemáticas e inglés. Hay 3 registros que indican 70 puntos en chino, 80 puntos en matemáticas y 58 puntos en inglés. Utilice una declaración SQL para consultar estos tres registros y mostrarlos de acuerdo con las siguientes condiciones (y escriba sus ideas):
Una puntuación mayor o igual a 80 significa excelente, una puntuación mayor o igual a 60 significa aprobado y una puntuación menor a 60 significa reprobado.
Formato de visualización:
Chino Matemáticas Inglés
Apto Excelente Suspenso
------------ - ------------------------------
seleccione
(caso cuando sea chino> =80 y luego 'Excelente'
cuando chino>=60 y luego 'Aprobado'
de lo contrario 'Reprobado') como chino,
(caso cuando Matemáticas> = 80 y luego 'Excelente'
cuando Matemáticas>=60 y luego 'Aprobado'
de lo contrario 'Reprobado') como Matemáticas,
(caso cuando Inglés> =80 luego 'Excelente'
cuando inglés>=60 luego 'Aprobado'
de lo contrario 'Falla') como inglés,
de la tabla
5. En sqlserver2000, utilice sql para crear una tabla temporal de usuario y una tabla temporal del sistema, que contengan dos campos ID e IDValues, ambos de tipo int, y explique la diferencia entre los dos.
- --------------------------------------
Tabla temporal de usuario: crear tabla #xx(ID int, IDValues int)
Tabla temporal del sistema: crear tabla ##xx(ID int, IDValues int)
Diferencia:
La tabla temporal del usuario solo es visible para la sesión del usuario que creó la tabla y es invisible para otros procesos.
Esta tabla temporal se elimina automáticamente cuando el proceso. que la creó desaparece.
La tabla temporal global es visible para toda la instancia de SQL Server, pero cuando todas las sesiones que acceden a ella desaparecen, también se elimina automáticamente
6.sqlserver2000. Una base de datos grande. La capacidad de almacenamiento solo está limitada por el medio de almacenamiento. ¿Cómo se implementa este mecanismo de capacidad ilimitada?
------------------------------------------- --
Todos sus datos se almacenan en archivos de datos (*.dbf), por lo que siempre que el archivo sea lo suficientemente grande, la capacidad de almacenamiento de SQL Server se puede ampliar
. Hay tres tipos de archivos de bases de datos de SQL Server 2000:
Archivos de datos primarios
Los archivos de datos primarios son el punto de partida de la base de datos y apuntan a otras partes de los archivos de la base de datos. Cada base de datos tiene un archivo de datos principal. La extensión de archivo recomendada para archivos de datos primarios es .mdf.
Archivos de datos secundarios
Los archivos de datos secundarios contienen todos los archivos de datos excepto los archivos de datos primarios. Es posible que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras bases de datos pueden tener varios archivos de datos secundarios. La extensión de archivo recomendada para archivos de datos secundarios es .ndf.
Archivo de registro
El archivo de registro contiene toda la información de registro necesaria para restaurar la base de datos. Cada base de datos debe tener al menos un archivo de registro, pero puede haber más de uno. La extensión de archivo recomendada para los archivos de registro es .ldf.
7. Utilice una declaración SQL para obtener el resultado.
Retire los datos de formato enumerados en la tabla 3 de la tabla 1 y la tabla 2. Tenga en cuenta que los datos y los resultados proporcionados no son precisos. solo se utilizan como formato. Pida consejo a todos.
También puedes utilizar procedimientos almacenados.
tabla1
Mes mes desempeño dep departamento yj
---------------------- - ---------
Enero 01 10
Enero 02 10
Enero 03 5
Martes Mes 02 8
04 de febrero 9
03 de marzo 8
tabla2
Departamento dep nombre del departamento nombre
-- ------------------------------
01 Departamento de Negocios Nacionales 1
02 Departamento de Negocio Nacional 2
03 Departamento de Negocio Nacional 3
04 Departamento de Negocio Internacional
tabla3 (resultado)
Departamento de departamento enero, febrero , marzo
----------------------------------------- ---- --
01 10 nulo nulo
02 10 8 nulo
03 nulo 5 8
04 nulo nulo 9
------------------------------------------- --
1)
Seleccione a. Nombre del departamento, b. Rendimiento yj como 'Enero', c. Rendimiento yj como 'Febrero', d. '
de la tabla1 a, tabla2 b, tabla2 c, tabla2 d
donde a.departamento dep = b.departamento dep y b.mes mon = 'enero' y
a. Departamento de departamento = c. Departamento de departamento y c. Mes mes = 'Febrero' y
a. Departamento de departamento = d. /p> p>
2)
seleccione a.dep,
sum(caso cuando b.mon=1 entonces b.yj else 0 finalice) como 'Enero' ,
suma(caso cuando b.mon=2 entonces b.yj else 0 finaliza) como 'Febrero',
suma(caso cuando b.mon=3 entonces b.yj else 0 final) como 'Marzo',
sum(caso cuando b.mon=4 entonces b.yj else 0 final) como 'Abril',
suma(caso cuando b .mon=5 luego b.yj else 0 finaliza) como 'mayo',
suma (caso cuando b.mon=6 entonces b.yj else 0 finaliza) como 'junio',
suma (caso cuando b.mon=7 entonces b.yj else 0 finaliza) como 'julio',
suma(caso cuando b.mon=8 entonces b.yj else 0 finaliza) como 'Agosto',
suma(caso cuando b.mo
n=9 entonces b.yj else 0 finaliza) como 'septiembre',
suma (caso cuando b.mon=10 entonces b.yj else 0 finaliza) como 'octubre',
sum(caso cuando b.mon=11 entonces b.yj else 0 finaliza) como 'Noviembre',
sum(caso cuando b.mon=12 entonces b.yj else 0 finaliza) como ' diciembre',
de la tabla2 a la izquierda une la tabla1 b en a.dep=b.dep
8. Pregunta de la entrevista de Huawei
Hay varios registros para Id. en una tabla. Descubra todos los registros de esta identificación y muestre el número de registros.
------------------------------------------- --
seleccione id, Contar(*) del grupo tb por id con conteo(*)>1
seleccione * de(seleccione conteo(ID) como conteo del grupo de tabla por ID)T donde T.count>1 Consulta SQL preguntas y respuestas de la entrevista 2
1 Consulta las puntuaciones promedio de diferentes cursos impartidos por diferentes profesores y muéstralas de mayor a menor
. SELECT max(Z.T#) AS ID del profesor, MAX (Z.Tname) AS Nombre del profesor, C.C# AS ID del curso, MAX (C.Cname) AS Nombre del curso, AVG (Puntuación) AS Puntuación media
DE SC AS T,Curso AS C,Profesor AS Z
donde T.C#=C.C# y C.T#=Z.T#
AGRUPAR POR C.C#
ORDEN BY AVG(Score) DESC
2. Consultar los expedientes académicos de los estudiantes clasificados del 3 al 6 en los siguientes cursos: Gestión Empresarial (001), Marx (002), UML (003), Base de datos (004)
[ID del estudiante], [Nombre del estudiante], Gestión Empresarial, Marx, UML, Base de datos, Puntuación promedio
SELECT DISTINCT top 3
SC.S# As Número de estudiante,
Student.Sname AS nombre del estudiante,
T1.score AS gestión empresarial,
T2.score AS Marx,
T3.score AS UML,
T4.score AS base de datos,
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score ,0) + ISNULL(T4.score,0) como puntuación total
FROM Student,SC LEFT JOIN SC AS T1
ON SC.S# = T1.S# AND T1 .C# = ' 001'
UNIRSE A LA IZQUIERDA SC COMO T2
ON SC.S# = T2.S# AND T2.C# = '002'
UNIRSE A LA IZQUIERDA SC COMO T3
ON SC.S# = T3.S# AND T3.C# = '003'
UNIRSE A LA IZQUIERDA SC COMO T4
ON SC.S# = T4.S# AND T4.C# = '004'
DONDE estudiante.S#=SC.S# y
ISNULL(T1.score,0) + ISNULL(T2 .score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
NO EN
(SELECCIONAR
DISTINTO
TOP 15 CON EMPATES
ISNULL(T1.score,0) + ISN
ULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
FROM sc
LEFT JOIN sc COMO T1
ON sc.S# = T1.S# AND T1.C# = 'k1'
UNIÓN IZQUIERDA sc COMO T2
ON sc.S# = T2.S # AND T2.C# = 'k2'
UNIR IZQUIERDA sc COMO T3
ON sc.S# = T3.S# AND T3.C# = 'k3'
UNIRSE IZQUIERDA sc COMO T4
ON sc.S# = T4.S# AND T4.C# = 'k4'
ORDENAR POR ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);
3. Las estadísticas imprimen las puntuaciones de cada materia y el número de personas en cada banda de puntuación: ID del curso, nombre del curso, [100-85], [85-70], [70-60], [ <60]
SELECCIONE SC.C# como ID del curso, Cname como nombre del curso p>
,SUM(CASO CUANDO puntuación ENTRE 85 Y 100 ENTONCES 1 MÁS 0 FINAL) COMO [100 - 85]
,SUM(CASO CUANDO puntuación ENTRE 70 Y 85 ENTONCES 1 ELSE 0 FINAL) COMO [85 - 70]
,SUM(CASO CUANDO la puntuación ENTRE 60 Y 70 ENTONCES 1 ELSE 0 FINAL) COMO [70 - 60]
,SUM( CASO CUANDO puntuación < 60 ENTONCES 1 MÁS 0 FINAL) COMO [60 -]
DE SC,Curso
donde SC.C#=Curso.C#
GRUPO BY SC.C#, Cname;
4. Consultar las puntuaciones y clasificaciones promedio de los estudiantes
SELECT 1+(SELECT COUNT( puntuaciones promedio distintas)
FROM ( SELECCIONE S#,AVG (puntaje) COMO puntaje promedio
FROM SC
GRUPO POR S#
) COMO T1
DONDE promedio puntuación> T2.Puntuación promedio) como clasificación,
S# como número de estudiante, puntuación promedio
FROM (SELECT S#,AVG(score) puntuación promedio
DESDE SC
GRUPO POR S#
) COMO T2
ORDENAR POR puntuación promedio desc
5. Consulta los tres primeros puntuaciones en cada materia Registro: (independientemente de las puntuaciones empatadas)
SELECCIONE t1.S# como ID de estudiante, t1.C# como ID de curso, Puntuación como puntuación
FROM SC t1 p>
CUÁNDO
Puntuación RE EN (SELECCIONE la puntuación TOP 3
DESDE SC
DONDE t1.C#= C#
ORDENAR POR puntuación DESC
)
ORDENAR POR t1.C#;
6. Consultar el número de estudiantes seleccionados para cada curso
seleccione c#,count(S#) del grupo sc por C#
7. Consulta los números de estudiantes y los nombres de todos los estudiantes que han tomado un solo curso.
selecciona SC.S#,Student.Sname,count(C#) AS Número de cursos. seleccionado
de SC ,Student
donde SC.S#=Student.S# agrupa por SC.S# ,Student.Sname con recuento(C#)=1
8. Consultar los números de estudiantes y los nombres de todos los estudiantes cuyas calificaciones en el curso número?002?son inferiores a las del curso número?001?
Seleccione S#,Sname de ( seleccione Student.S#, Student.Sname,score (seleccione puntuación de SC SC_2 donde SC_2.S#=Student.S# y SC_2.C#='002') puntuación2
de Student,SC donde Student.S#=SC .S# y C#='001') S_2 donde puntuación2
9. Consulta los números de estudiantes y los nombres de todos los estudiantes cuyas puntuaciones sean inferiores a 60 puntos
<. p>seleccione S#,Nombrede Estudiante
donde S# no está (seleccione Estudiante.S# de Estudiante,SC donde S.S#=SC.S# y puntuación>60
10. Consulta el número de estudiante y el nombre de los estudiantes que no han completado todos los cursos
selecciona Student.S#,Student.Sname
de; Student,SC
Donde Student.S#=SC.S# agrupa por Student.S#,Student.Sname con recuento(C#) <(select count(C#) from Course
);11. Consultar al menos un curso El número de estudiante y el nombre del estudiante cuya clase es la misma que el estudiante cuyo número de estudiante es ?1001?
seleccione S#,Sname from Student,SC; donde Student.S#=SC.S# y C# en select C# de SC donde S#='1001'
12. con el número de estudiante ?001?
Seleccione distinto SC.S#,Nombre
de Estudiante,SC
donde Estudiante.S#=SC.S # y C# en (seleccione C# de SC donde S#=' 001');
13. Cambie las calificaciones de la clase impartida por el profesor Ye Ping en la tabla SC a la calificación promedio de este curso; <
/p>
actualizar puntaje establecido SC=(seleccione promedio(SC_2.score)
de SC SC_2
donde SC_2.C#=SC.C# ) del curso,Profesor donde Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='Ye Ping'
14. El curso estudiado por la consulta es exactamente el mismo que el de el estudiante No. 1002 Los números de estudiantes y los nombres de otros estudiantes
seleccione S# de SC donde C# está (seleccione C# de SC donde S#='1002')
grupo; por S# teniendo count( *)=(select count(*) from SC donde S#='1002'
15. Elimina el registro de la tabla SC de la clase de Ye Ping
<; p> Eliminar SCdel curso, Profesor
donde Curso.C#=SC.C# y Curso.T#= Profesor.T# y Tname='Ye Ping' ; p>
16. Insertar algunos registros en la tabla SC. Estos registros deben cumplir con las siguientes condiciones: el número de estudiantes que no han tomado el curso No. 003, la calificación promedio del curso No. 2,
;
Insertar SC seleccione S#,'002',(Seleccione promedio(puntuación)
de SC donde C#='002') de Estudiante donde S# no está (Seleccione S# de SC donde C#='002');
17. Muestre los resultados de la base de datos de todos los estudiantes, gestión empresarial y cursos de inglés de mayor a menor según el promedio. puntuación y mostrarlos en el siguiente formato: ID de estudiante, base de datos, gestión empresarial, inglés, número de curso válido, puntuación media válida
SELECCIONE S# como ID de estudiante
,( SELECCIONE la puntuación DE SC DONDE SC.S#= t.S# AND C#='004') COMO base de datos
, (SELECCIONE la puntuación DE SC DONDE SC.S#=t.S# AND C#='001') COMO gestión empresarial
, (SELECCIONE puntuación DE SC DONDE SC.S#=t.S# AND C#='006') AS Inglés
,COUNT(*) AS Número de cursos válidos, AVG(t.score) AS Puntuación media
p>DESDE SC AS t
GRUPO POR S#
ORDENAR POR avg(t.score) p>
18. Consulte la puntuación más alta en cada materia y la puntuación más baja: se muestra en el siguiente formulario: ID del curso, puntuación más alta, puntuación más baja
SELECCIONE L.C# como ID del curso, L.score AS puntuación más alta, R.score AS puntuación más baja
FROM SC L ,SC AS R
WHERE L.C# = R.C# y
L.score = ( SELECCIONE MAX(IL.score)
DE SC AS IL,Estudiante AS
IM
DONDE L.C# = IL.C# y IM.S#=IL.S#
GRUPO POR IL.C#)
Y
R.Score = (SELECCIONAR MIN(IR.score)
DESDE SC COMO IR
DONDE R.C# = IR.C#
AGRUPAR POR IR .C#
);
19. Ordenar por la puntuación promedio de cada materia de menor a mayor y el porcentaje de aprobación de mayor a menor
SELECCIONAR t.C# AS Número de curso, max(curso.Cname) AS nombre del curso, isnull(AVG(score),0) AS puntaje promedio
,100 * SUM(CASE WHEN isnull(score,0)>= 60 ENTONCES 1 ELSE 0 END)/COUNT(*) COMO porcentaje de aprobación
FROM SC T,Course
donde t.C#=course.C#
GROUP BY t.C#
ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC
20. Consulta el promedio puntuaciones de los siguientes cursos y porcentaje de tasa de aprobación (se muestra con "1 fila"): Gestión empresarial (001), Marx (002), OO&UML (003), Base de datos (004)
SELECT SUM(CASE) CUANDO C# ='001' ENTONCES puntaje ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) COMO puntaje promedio de gestión empresarial
,100 * SUM(CASE WHEN C# = '001 'Y puntuación >= 60 ENTONCES 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) COMO porcentaje de aprobación de gestión empresarial
,SUM(CASE WHEN C# = '002' ENTONCES puntaje ELSE 0 END) /SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) COMO puntaje promedio de Marx
,100 * SUM(CASE WHEN C# = '002' AND puntaje >= 60 ENTONCES 1 ELSE 0 END)/ SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) COMO porcentaje de aprobación de Marx
,SUM(CASE WHEN C# = '003' THEN puntuación ELSE 0 END)/SUM (CASO C# CUANDO '003 ' ENTONCES 1 MÁS 0 FINAL) COMO puntuación promedio UML
,100 * SUMA(CASE CUANDO C# = '003' Y puntuación >= 60 ENTONCES 1 MÁS 0 FINAL)/SUM( CASE WHEN C# = '003 ' THEN 1 ELSE 0 END) COMO porcentaje de aprobación de UML
,SUM(CASE WHEN C# = '004' THEN puntuación ELSE 0 E
ND)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) COMO puntuación promedio de la base de datos
,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END )/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) COMO porcentaje de aprobación de la base de datos
FROM SC;