Base de datos Práctica diaria de LeetCode (3)

contenido

prefacio

Tema 1: Análisis del juego

Tema 2: Clientes con más pedidos

Tema 3: Grandes países

Tema 4: Números Consecutivos

Resumen del tema


prefacio

  • Revisa los puntos destacados anteriores

Práctica diaria de la base de LeetCode (1)datos 2 )

Tema 1: Análisis del juego

511. Análisis del juego I

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_20, color_FFFFFF, t_70, g_se, x_16

  • Requisitos de la pregunta: Obtenga la fecha del primer inicio de sesión de cada jugador en la plataforma
  • Idea de procesamiento: la fecha de inicio de sesión en la plataforma por primera vez resultó ser la fecha de inicio de sesión en la plataforma por primera vez, que es la event_date más pequeña en el player_id correspondiente, por lo que surgió la idea y usted puede consultar directamente min (fecha) con una consulta agregada.   
  • Cómo pensar en usar una consulta agregada, primero hay varias fechas de inicio de sesión, pero solo necesitamos la más pequeña, por lo que pensamos en comprimir a través de una consulta agregada, que se puede usar en combinación con funciones agregadas. Las funciones agregadas de uso común se adjuntan de la siguiente manera

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_20, color_FFFFFF, t_70, g_se, x_16

select 
    player_id,
    min(event_date) as 'first_login'  
from 
    activity
group by 
    player_id;

Tema 2: Clientes con más pedidos

586. Clientes con más pedidos

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_14, color_FFFFFF, t_70, g_se, x_16

  •  Requisito de título: Obtener al cliente con la mayor cantidad de pedidos
  • Dirección de pensamiento: Necesitamos obtener al cliente con la mayor cantidad de pedidos. El primer paso es calcular la cantidad de pedidos. Para calcular la cantidad de pedidos, necesitamos agregar consulta, contar (número_cliente) o contar (*) para obtener el número de pedidos, y luego directamente según el número de pedidos de Ordenar de grande a pequeño. El primer elemento es el número máximo de pedidos requerido por los clientes (para obtener el más grande, cuál es el más grande y cuál es el más pequeño , debe pensar en ordenar + limitar la paginación)
select 
    customer_number
from 
    orders
group by customer_number
order by count(*) desc
limit 0, 1; # 获取第一条记录

Tema 3: Grandes países

595. Gran país

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_20, color_FFFFFF, t_70, g_se, x_16

  •  Requisitos de título: debemos filtrar los principales países de acuerdo con las siguientes reglas

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_20, color_FFFFFF, t_70, g_se, x_16

  •  Ideas para resolver problemas: es muy simple y se puede lograr consultando directamente una condición de dónde para filtrar países grandes.
select 
    name, population, area
from 
    world
where 
    area >= 3000000 or population >= 25000000;
-- where 条件筛选大国

Tema 4: Números Consecutivos

180. Números consecutivos

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_17, color_FFFFFF, t_70, g_se, x_16

  • marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBA5bCP5p2wMzEy, tamaño_13, color_FFFFFF, t_70, g_se, x_16
  • Requisitos del ítem: 1. Ocurre continuamente 2. Ocurre tres veces
  • Debido a que necesitamos encontrar de la misma tabla, solo hay una tabla, y la relación es el número de registros repetidos que aparecen tres veces seguidas en la tabla, por lo que es fácil pensar que podemos consultar a través de la autocombinación.    Entonces definitivamente habrá repeticiones en el proceso de consulta, porque es equivalente a lo mismo La tabla está conectada a sí misma dos veces        Por lo tanto, se debe realizar una distinción
select distinct
    l1.num as 'ConsecutiveNums'    -- 'consecutivenums'题目要求别名
from 
    logs l1 inner join logs l2 on l1.num = l2.num
    inner join logs l3 on l1.num = l3.num
    # 子连接关系条件满足同一个num
where 
    l1.id = l2.id + 1 && l2.id = l3.id + 1; 
    -- where条件保证连续记录

Resumen del tema

  • Para encontrar el número de registros repetidos, debemos pensar en consultas de agregación, porque las consultas de agregación pueden comprimir la misma operación de agregación de palabras clave.
  • Para encontrar el registro más grande o más pequeño, debemos pensar que podemos usar ordenación + límite de paginación
  • La operación de combinación de varias tablas no se limita al número de tablas, e incluso se pueden conectar tres tablas y cuatro tablas al mismo tiempo, pero generalmente no se recomienda escribir de esta manera después de que el número sea demasiado grande y usted necesitas encontrar otra manera, porque no puedes escribirlo  

Supongo que te gusta

Origin blog.csdn.net/weixin_53695360/article/details/124062896
Recomendado
Clasificación