Fuente:
Descargo de responsabilidad: si violé los derechos de alguien, comuníquese conmigo y lo eliminaré.
Bienvenidos expertos para rociarme
Directorio de artículos
Cómo utilizar Distintos en MySQL
Mesa de prueba:
- Operar en múltiples columnas
seleccione orderid, foodName, price distintos de table_3;
Cuando se aplica distinto a varios campos, el alcance de su aplicación esTodos los campos después de él, No solo un campo junto a él, y los distintos solo se pueden colocar delante de todos los campos. La siguiente declaración es incorrecta:
seleccione orderid, foodName, precio distinto de table_3;
- Distinct no filtra NULL, es decir, el resultado devuelto contiene valores NULL.
619. El mayor número que aparece solo una vez
Descripción del Título
Enlace: https://leetcode-cn.com/problems/biggest-single-number
El campo num de la tabla my_numbers contiene muchos números, incluidos muchos números repetidos.
¿Puede escribir una consulta SQL y encontrar el número más grande entre los números que solo han aparecido una vez?
± - +
| num |
± - +
| 8 |
| 8 |
| 3 |
| 3 |
| 1 |
| 4 |
| 5 |
| 6 |
Para los datos de muestra proporcionados anteriormente, su declaración de consulta debe devolver los siguientes resultados:
± - +
| num |
± - +
| 6 |
Nota:
Si no hay ningún dígito que solo aparezca una vez, la salida es nula.
responder
# Write your MySQL query statement below
select max(num) as num from
(
select num from my_numbers group by num having count(num)=1
)as template_table
select
ifnull(
(
select num from
(
select num from my_numbers group by num having count(*)=1 order by num desc
)as template_table
limit 1)
,null) as num;
1076. Personal del proyecto II
Enlace: https://leetcode-cn.com/problems/project-employees-ii
Descripción del Título
Tabla: Proyecto
± ------------ ± -------- +
| Nombre de columna | Tipo |
± ------------ ± ------- - +
| project_id | int |
| employee_id | int |
± ------------ ± -------- + La
clave principal es (project_id, employee_id).
employee_id es la clave externa de la tabla Empleado.
Mesa: Empleado
± ----------------- ± -------- +
| Nombre de columna | Tipo |
± ----------------- ± -------- +
| employee_id | int |
| nombre | varchar |
| experience_years | int |
± ----------------- ± -------- +
主 键 是 ID_empleado。
Escribe una consulta SQL para reportar los artículos con más empleados.
El formato del resultado de la consulta es el siguiente:
Tabla de proyectos:
± ------------ ± ------------ +
| project_id | employee_id |
± ------------ ± ------------ +
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
± ------------ ± ------------ +
Tabla de empleados:
± ------------ ± ------- ± ----------------- +
| employee_id | nombre | experience_years |
± ------------ ± ------- ± ----------------- +
| 1 | Khaled | 3 |
| 2 | Ali | 2 |
| 3 | John | 1 |
| 4 | Doe | 2 |
± ------------ ± ------- ± ----------------- +
Tabla de resultados:
± ------------ +
| project_id |
± ------------ +
| 1 |
± ------------ + El
primer proyecto tiene 3 empleados y el segundo proyecto tiene 2 empleados.
responder
# Write your MySQL query statement below
select project_id
from Project
group by project_id
having count(distinct employee_id) >= all
(
select count(distinct employee_id) from Project group by project_id
)
SELECT PROJECT_ID
FROM PROJECT
GROUP BY 1
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM PROJECT
GROUP BY PROJECT_ID);
178. Clasificación de puntuación
Enlace: https://leetcode-cn.com/problems/rank-scores
Descripción del Título
Escriba una consulta SQL para lograr una clasificación de puntuación.
Si las dos puntuaciones son iguales, las dos puntuaciones se clasifican (Rango) de la misma manera. Tenga en cuenta que la siguiente clasificación después de la división debe ser el siguiente valor entero consecutivo. En otras palabras, no debería haber "brecha" entre las clasificaciones.
± - ± ------ +
| Id | Puntuación |
± - ± ------ +
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
± - ± ------ +
Por ejemplo, de acuerdo con la tabla de Puntuaciones dada arriba, su consulta debería devolver (clasificada de mayor a menor puntuación):
± ------ ± ----- +
| Puntaje | Clasificación |
± ------ ± ----- +
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
± ------ ± ----- +
Nota importante: para las soluciones MySQL, si desea escapar de las palabras reservadas utilizadas como nombres de columna, puede usar la clave Use apóstrofos antes y después de las palabras. P.ejRank
responder
SELECT SCORE, DENSE_RANK() OVER(ORDER BY SCORE DESC) AS 'RANK'
FROM SCORES;
select a.Score as Score,
(select count(distinct b.Score) from Scores b where b.Score >= a.Score) as "Rank"
from Scores a order by a.Score desc
¡No hay función de rango en mysql! ! ! !
Consulte http://fellowtuts.com/mysql/query-to-obtain-rank-function-in-mysql/ Cómo implementar la función de rango en mysql