Cómo utilizar el distintivo en MySQL + MySql pregunta 619 en leetcode. El número más grande que aparece solo una vez + 1076. Proyecto empleado II + 178. Clasificación de puntuación

Fuente:
Descargo de responsabilidad: si violé los derechos de alguien, comuníquese conmigo y lo eliminaré.
Bienvenidos expertos para rociarme

Cómo utilizar Distintos en MySQL

Mesa de prueba:
Inserte la descripción de la imagen aquí

  1. Operar en múltiples columnas

seleccione orderid, foodName, price distintos de table_3;> seleccione un país distinto, una provincia de la persona

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;
> SELECCIONAR país, provincia distinta de persona; // Esta afirmación es incorrecta

  1. 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

Supongo que te gusta

Origin blog.csdn.net/qq_45531729/article/details/112203637
Recomendado
Clasificación