. Calidad y compartir resultados de consulta LeetCode-1211 (simples)

Las consultas de tabla de búsqueda: 

+ ------------- + --------- +
| columna Nombre | Tipo |
+ ------------- + ---- + -----
| nombre_consulta | VARCHAR |
| el resultado | VARCHAR |
| posición | int |
| Clasificación | int |
+ ------------- + --------- +
esta tabla no tiene clave primaria, y puede tener filas duplicadas.
Esta tabla contiene cierta información de consulta obtenida de la base de datos.
columna "Posición" (posición) tiene un valor de 1 a 500.
"Clasificación" (Rating) columna tiene un valor 1-5. Consultas puntuación inferior a 3 se definen como la mala calidad de las investigaciones.
 

Los resultados de la calidad de la calidad se define como:

La relación entre las puntuaciones medias para cada consulta resultado de su ubicación.

La consulta inferiores porcentaje poor_query_percentage es:

Puntuación de menos de 3 resultados porcentuales de los resultados totales de consulta.

Escribe un conjunto de SQL para encontrar el nombre (nombre_consulta) para cada consulta, la calidad (calidad) y consultas porcentaje de baja calidad (poor_query_percentage).

La calidad (calidad) y consultas de baja calidad porcentaje (poor_query_percentage) debe ser redondeado a dos decimales.

Los resultados mostrados en el siguiente formato:

Tabla de consultas:
+ ------------ + ------------------- + ---------- + - ------ +
| nombre_consulta | como resultado | posición | calificación |
+ ------------ + ------------------- + ---------- + ----- --- +
| perro | Golden Retriever | 1 | 5 |
| perro | Pastor alemán | 2 | 5 |
| perro | mula | 200 | 1 |
| gato | Shirazi | 5 | 2 |
| gato | siamés | 3 | 3 |
| gato | sphynx | 7 | 4 |
+ ------------ + ------------------- + ---------- + ----- --- +

Tabla de resultados:
+ ------------ + --------- + ----------------------- +
| nombre_consulta | la calidad | poor_query_percentage |
+ ------------ + --------- + ----------------------- +
| perro | 2.50 | 33.33 |
| gato | 0.66 | 33.33 |
+ ------------ + --------- + ----------------------- +

Perro de consulta calidad resultados a ((5/1) + (5/2) + (1/200)) / 3 = 2,50
porcentaje inferior de resultado de la consulta de la consulta de perro (1/3) * 100 = 33,33

resultados de la consulta calidad Cat a ((2/5) + (3/3) + (4/7)) / 3 = 0,66
porcentaje inferior de resultado de la consulta de la Cat consulta (1/3) * 100 = 33,33

Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/queries-quality-and-percentage
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

Moderación: escribir un conjunto de SQL para encontrar el nombre (nombre_consulta) para cada consulta, la calidad (calidad) y el porcentaje de consultas de baja calidad (poor_query_percentage). La calidad (calidad) y consultas de baja calidad porcentaje (poor_query_percentage) debe ser redondeado a dos decimales.

Esta pregunta puede parecer complejo, pero no es complicado sql.

Pensando:

La relación entre las puntuaciones medias para cada consulta resultado de su ubicación.

Puntuación / posición dividiendo por el número de resultados.

Puntuación de menos de 3 resultados porcentuales de los resultados totales de consulta.

Encuentra resultados dividido por el número total de menos de 3.

 

En primer lugar agrupadas por nombre. Luego buscar / posición y, dentro del grupo de paquetes se divide por el número de calificación.

Número es menor que 3 en cada solicitud, el número de grupos divididos.

La resolución de problemas:

SELECT query_name, ROUND(AVG(unavg_quality), 2) AS quality, 
    ROUND(AVG(poor_query) * 100, 2) AS poor_query_percentage
FROM
(
SELECT query_name, rating, rating/position AS unavg_quality, 
    IF(rating >= 3, 0, 1) AS poor_query
FROM Queries
) AS temp
GROUP BY query_name;

-- 练习
select query_name, ROUND(AVG(unavg_quality),2) as quality,
ROUND(AVG(poor_query)*100,2) as poor_query_percenyage
from(
query_name, rating, rating/position AS unavg_quality, 
   IF(rating >= 3, 0, 1) AS poor_query
FROM Queries
) AS temp
group by query_name;

Segundo método:

select query_name, round(avg(rating/position),2) quality, 
round((sum(if(rating<3,1,0))/count(*))*100,2) poor_query_percentage
from Queries
group by query_name;

 puntos de conocimiento:

Publicados 144 artículos originales · ganado elogios 2 · Vistas 5746

Supongo que te gusta

Origin blog.csdn.net/Hello_JavaScript/article/details/104712391
Recomendado
Clasificación