[Inicio rápido de MYSQL] Niuke.com: consulta de tablas múltiples

 

 

Ejemplo 1: vea los detalles de todas las preguntas de los usuarios de la Universidad de Zhejiang, incluidos device_id, question_id y result. Por favor elimine los datos correspondientes

Ideas :

Usuario de tabla de conexión y clave de conexión de práctica_detalle (user_profile.device_id, question_practice_detail.device.id)

显示:user_profile.universty,practice_detail.result

select qpd.device_id,qpd.question_id,qpd.result
from user_profile as u
join question_practice_detail as qpd
using(device_id)
where u.university="浙江大学"

(No es necesario agrupar, use dónde seleccionar directamente)

Ejemplo 2: cuente el número promedio de respuestas en cada universidad, muestre la universidad, avg_answer_cnt y ordene los resultados en orden ascendente de la universidad

Idea: Según la agrupación de universidades, el número medio de respuestas es el número total de respuestas/número de respondedores

select u.university,count(qpd.result)/count(distinct qpd.device_id)
from user_profile as u
join question_practice_detail as qpd
using(device_id)
group by u.university;

Ejemplo 3: Sacar el promedio de preguntas respondidas por usuarios de diferentes escuelas y diferentes niveles de dificultad

Idea: primero agrupe por escuela, luego agrupe por dificultad, use la tabla 2 para conectar la tabla 1 y la tabla 3

select university,difficult_level,count(result)/count(distinct device_id) as avg_answer_cnt
from question_practice_detail as qpd
left join user_profile as u using(device_id)
left join question_detail as qd using(question_id)
group by university,difficult_level

Si no hay nombres de columna duplicados en varias tablas excepto la clave de combinación, puede omitir el alias y escribir el nombre de la columna directamente.

¿Tanto la combinación como la combinación izquierda son correctas?

Ejemplo 4: verifique el número promedio de preguntas respondidas por los usuarios de la Universidad de Shandong que participaron en las preguntas de respuesta en diferentes niveles de dificultad

select u.university,qd.difficult_level,count(q.result)/count(distinct q.device_id)
from question_practice_detail as q
left join user_profile as u using(device_id)
left join question_detail as qd using(question_id)
group by u.university,qd.difficult_level
having u.university="山东大学"

O utilice where university="Universidad de Shandong" y colóquelo delante de group by, lo que significa filtrar los registros de la Universidad de Shandong antes de agruparlos.

Ejemplo 5: verifique los datos de device_id, sexo, edad y gpa de los usuarios cuya escuela es la Universidad de Shandong o cuyo sexo es masculino. Saque los resultados correspondientes sin deduplicar los resultados.

El resultado no se deduplica: unión de todos

select device_id,gender,age,gpa 
from user_profile
where university="山东大学"
union all
select device_id,gender,age,gpa 
from user_profile
where gender="male"

Supongo que te gusta

Origin blog.csdn.net/m0_52043808/article/details/124133280
Recomendado
Clasificación