175. Combine dos mesas
Escribir una consulta SQL para cumplir las condiciones: independientemente de si la persona tiene información de dirección, debe proporcionar la siguiente información de persona en función de las dos tablas anteriores:
FirstName, LastName, Ciudad, Estado
Desde si la persona tiene información de dirección o no, puede saber que desea usar la combinación externa izquierda. Durante el proceso de escritura, se encuentra que el uso de alias hará que la consulta sea mucho más rápida.
Conexión externa, conexión interna: https://blog.csdn.net/plg17/a…
— CREAR leetcode BASE DE DATOS;
USE leetcode;
CREAR TABLA SI NO EXISTE PERSONA(
PersonId INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
CLAVE PRINCIPAL (PersonId)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
— CREAR TABLA SI NO EXISTE Dirección(
— AddressId INT,
— PersonId INT,
— Ciudad VARCHAR(40),
— VARCHAR estatal(40),
— CLAVE PRINCIPAL (AddressId)
— )ENGINE=InnoDB DEFAULT CHARSET=utf8;
— INSERTE EN PERSONA (PersonId,FirstName,LastName)
— VALORES (1234,»lin»,»qing»);
— INSERTE EN LA DIRECCIÓN (AddressId,PersonId,City,State)
— VALORES (1.123,»chengdu»,»111″);
— SELECCIONE * DESDE Dirección;
SELECCIONE p.FirstName, p.LastName, a.City, a.State
de Person p LEFT JOIN Dirección a ON p.PersonId = a.PersonId
176. Segundo salario más alto
— TABLA DE CAÍDAS
— SI
— EXISTE Empleado;
— CREAR EMPLEADO DE MESA ( Id INT, Salario INT );
— INSERTAR EN EL EMPLEADO ( Id, Salario )
— VALORES
— ( 1, 100 ),
— ( 2, 200 ),
— ( 3, 300 );
SELECT (
SELECCIONAR SALARIO DISTINTO
de Empleado
ORDEN POR SALARIO DESC
LÍMITE 1,1)COMO SegundoIghestSalary
177. Enésimo salario más alto*
Escriba una consulta SQL para obtener el enésimo salario más alto (salario) en la tabla Empleado.
Por ejemplo, en la tabla Employee anterior, cuando n = 2, se debe devolver el segundo salario más alto 200. Si no hay un enésimo salario más alto, la consulta debe devolver null.
utilizar leetcode;
DELIMITADOR $$
CREATE FUNCTION getNthHighestSalary(N INT) DEVUELVE INT BEGIN
SET N = N -1;
RETORNO (
SELECT (
SELECCIONAR UN SALARIO DISTINTO DEL empleado
ORDEN POR SALARIO DESC
LÍMITE N,1
)
);
FIN $$
seleccionar getNthHighestSalary (2);
función de caída getNthHighestSalary;
178. Clasificación de puntuación*
Escriba una consulta SQL para lograr la clasificación de puntuación. Si las dos puntuaciones son las mismas, las dos puntuaciones clasifican (Rango) igual. Tenga en cuenta que la siguiente clasificación después del empate debe ser el siguiente valor entero consecutivo. En otras palabras, no debería haber ninguna «brecha» entre las clasificaciones.
Por ejemplo, en función de la tabla Puntuaciones indicada anteriormente, la consulta debe devolverse (clasificada de mayor a menor puntuación):
utilizar leetcode;
— CREAR TABLA SI NO EXISTE Puntuaciones ( Id INT, Puntuación DECIMAL ( 3, 2 ) );
— INSERTAR EN Puntuaciones ( Id, Puntuación )
— VALORES
— ( 1, 3.5 ),
— ( 2, 3.65 ),
— ( 3, 4.0 ),
— ( 4, 3.85 ),
— ( 5, 4.0 ),
— ( 6, 3.65 );
# Escriba su instrucción de consulta MySQL a continuación
seleccione a.Score como Score,
(seleccione count(distinct b.Score)+1 de Scores as b where b.score > a.score) como rango
de puntuaciones como un
ORDEN POR a.Score desc
180. Números que aparecen consecutivamente*
Escriba una consulta SQL para buscar todos los números que aparecen al menos tres veces consecutivas.
Por ejemplo, dada la tabla Logs anterior, 1 es el único número que aparece al menos tres veces seguidas.
CREAR TABLA SI NO EXISTE REGISTROS ( ID INT, Num INT );
— INSERTAR EN REGISTROS ( Id, Num )
— VALORES
— ( 1, 1 ),
— ( 2, 1 ),
— ( 3, 1 ),
— ( 4, 2 ),
— ( 5, 1 ),
— ( 6, 2 ),
— ( 7, 2 );
—
Seleccione
DISTINTOS L1.num Números consecutivos
De
Registros L1,
Registros L2,
Registros L3
DÓNDE L1.id = l2.id – 1
Y L2.id = L3.id – 1
Y L1.num = L2.num
Y l2.num = l3.num;
.