Ejercicios diarios de SQL (15)

Los clientes realmente han asustado estas dos semanas. Soy un analista de datos, hago tareas más complicadas que los programadores, tengo el sueldo de un empleado, veo el tiempo de mi trabajo diario, siento que no tengo ganas de sobrevivir. Realmente no sé cuál es la imagen. Comprenda rápidamente el negocio, construya inmediatamente la tabla de la base de datos, escriba el sql de fondo, y luego haga el tablero web front-end, y también escriba pequeños programas para el negocio, ayúdelos a tratar con Excel y rastree datos para ellos ... ¿Nima quiere que sea versátil? Especialmente escupiendo olas, recopilación de datos, RPA que usan, ERP automatizado sin interfaces, creo que es muy poderoso, pero solo opere el navegador, rastree los datos y juegue Es realmente molesto. Todavía tengo que escribir de acuerdo con el proceso para estar en línea ... No lo aprecio. Me siento un poco deprimido. Tengo la sensación de que es como si me hubiera graduado de la universidad durante 2 años, y de repente me dijo que no estaba calificado, Léelo desde el comienzo del primer año ... ¿No es un paso retrógrado? Ciertamente no acepto el retroceso, prefiero parar y nunca retroceder.

Recopilación de datos-> Limpieza de datos-> Creación de tabla de base de datos-> Business logic sql-> Business front-end web board-> Soporte de programación adicional ...

Aunque puedo hacerlo, simplemente no quiero hacerlo. Hay un dicho que está totalmente de acuerdo: donde hay voluntad, hay una manera . Es solo una persona, solo yo. Si quiero hacer algo, Siempre trataré de encontrar una forma; si no quiero hacerlo, haré todo lo posible para encontrar una excusa. Necesito una excusa ahora, no, muchas excusas ...

Después de vomitar, sigo practicando sql. Aunque escribí mucho más complicado que estas notas en mi trabajo, pero mire cuidadosamente, los principios son similares. Simplemente practique, al igual que escribir, competente hasta que olvide cómo escribir

Relación de mesa

Requisito 01

Consultar todos los cursos y puntajes de los estudiantes

Análisis

Caso en el que convertir filas en columnas. SQL He escrito rutinas, primero es unirme a la tabla involucrada, y finalmente llegar al campo, qué hay allí.

select
from score as a
-- 匹配上课程名称, 学生信息
inner join course as b 
  on a.c_id = b.c_id 
inner join student as c 
  on a.s_id = c.s_i

Luego, después de ensamblarlo en una tabla grande, procesemos los campos, incluidos el filtrado de campos, la limpieza de campos (función), el filtrado de condiciones, la agregación de grupos, la clasificación y otras operaciones.

Esto es para usar el número de estudiante y el número de curso para agrupar, la puntuación también viene a agrupar por

mysql> select
    ->    s_id,
    ->    c_id,
    ->    score
    -> from score
    -> group by s_id, c_id, score;
+------+------+-------+
| s_id | c_id | score |
+------+------+-------+
| 0001 | 0001 |    80 |
| 0001 | 0002 |    90 |
| 0001 | 0003 |    99 |
| 0002 | 0002 |    60 |
| 0002 | 0003 |    80 |
| 0003 | 0001 |    80 |
| 0003 | 0002 |    80 |
| 0003 | 0003 |    80 |
+------+------+-------+
8 rows in set (0.00 sec)

Aún repitiendo, agrupar por es el punto más crítico. Los campos en select deben aparecer en agrupar por, o agregar funciones, de lo contrario causará ambigüedad. Entonces, de hecho, los resultados que queremos ver deberían ser Es el tipo de expansión, es necesario mostrar los cursos correspondientes a c_id del campo de fila a columna para mostrar, es decir, el caso en que c_id puede ser.

select
  a.s_id as 学号,
  a.c_id as 课程号,
  c.s_name as 姓名,

  -- 将课程的行转为列,用 case when 的方式
  max(case when b.c_name="语文" then a.score else null end) as 语文,
  max(case when b.c_name="数学" then a.score else null end) as 数学,
  max(case when b.c_name="英语" then a.score else null end) as 英语

from score as a
-- 匹配上课程名称, 学生信息
inner join course as b 
  on a.c_id = b.c_id 
inner join student as c 
  on a.s_id = c.s_id

group by c.s_id, c.s_name

+--------+-----------+-----------+--------+--------+--------+
| 学号   | 课程号    | 姓名      | 语文   | 数学   | 英语   |
+--------+-----------+-----------+--------+--------+--------+
| 0001   | 0001      | 王二      |     80 |     90 |     99 |
| 0002   | 0002      | 星落      |   NULL |     60 |     80 |
| 0003   | 0001      | 胡小适    |     80 |     80 |     80 |
+--------+-----------+-----------+--------+--------+--------+
3 rows in set (0.00 sec)

Ahora puedo escribirlo fácilmente, porque lo he seguido en Internet anteriormente. ¿Cuál puede ser una coincidencia? Efectivamente, recuerde nuevamente. Como dijo Ebbinghaus, la mejor manera de recordar es Repetir

No quiero practicar, creo que este caso es particularmente poderoso. Y todavía uso una función regular y la reemplazo hoy, y gradualmente siento un poco sobre SQL, al igual que la programación. Siempre siento que la programación es simple, SQL es difícil Pero los pequeños amigos no están de acuerdo. No importa qué, servirá. Simplemente practique más, creo.

Supongo que te gusta

Origin www.cnblogs.com/chenjieyouge/p/12757774.html
Recomendado
Clasificación