База данных LeetCode Ежедневная практика (3)

содержание

предисловие

Тема 1: Анализ игрового процесса

Тема 2: Клиенты с наибольшим количеством заказов

Тема 3: Большие страны

Тема 4: Последовательные номера

Резюме темы


предисловие

  • Просмотрите предыдущие основные моменты

Ежедневная LeetCode (1)базы данныхпрактика 2 )

Тема 1: Анализ игрового процесса

511. Анализ игрового процесса I

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  • Требования к вопросу: Получить дату первого входа каждого игрока на платформу.
  • Идея обработки: Дата входа в платформу в первый раз оказалась датой входа в платформу в первый раз, которая является наименьшей event_date в соответствующем player_id, так что идея вышла, и вы может напрямую запрашивать min(date) с помощью агрегированного запроса.   
  • Как думать об использовании агрегированного запроса, сначала есть несколько дат входа в систему, но нам нужна только самая маленькая, поэтому мы подумали о сжатии с помощью агрегированного запроса, который можно использовать в сочетании с агрегатными функциями.Обычно используемые агрегатные функции прикреплены следующим образом.

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

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

Тема 2: Клиенты с наибольшим количеством заказов

586. Клиенты с наибольшим количеством заказов

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_14, color_FFFFFF, t_70, g_se, x_16

  •  Требование к заголовку: Получите клиента с наибольшим количеством заказов
  • Направление мышления: нам нужно получить клиента с наибольшим количеством заказов. Первый шаг — подсчитать количество заказов. Чтобы подсчитать количество заказов, нам нужно агрегировать запрос, count(customer_number) или count(*) для получить количество заказов, а затем прямо по количеству заказов от Сортировать от большого к меньшему.Первый пункт - это количество максимальных заказов, необходимых клиентам (чтобы получить самый большой, какой самый большой, а какой самый маленький , вы должны думать о сортировке + ограничении подкачки)
select 
    customer_number
from 
    orders
group by customer_number
order by count(*) desc
limit 0, 1; # 获取第一条记录

Тема 3: Большие страны

595. Великая страна

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  •  Требования к названию: нам нужно отфильтровать основные страны в соответствии со следующими правилами.

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  •  Идеи решения проблем: это очень просто, и этого можно достичь, напрямую запросив условие «где» для фильтрации больших стран.
select 
    name, population, area
from 
    world
where 
    area >= 3000000 or population >= 25000000;
-- where 条件筛选大国

Тема 4: Последовательные номера

180. Порядковые номера

водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_17, color_FFFFFF, t_70, g_se, x_16

  • водяной знак, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_13, color_FFFFFF, t_70, g_se, x_16
  • Требования к предмету: 1. Происходит постоянно 2. Происходит три раза
  • Поскольку нам нужно найти из одной и той же таблицы, есть только одна таблица, а отношение — это повторяющиеся записи num, которые появляются три раза подряд в таблице, поэтому легко подумать, что мы можем запрашивать через самосоединение.    Тогда в процессе запроса обязательно будут повторы, т.к. это эквивалентно одной и той же таблице дважды подключается сама к себе        , поэтому необходимо выполнить различное
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条件保证连续记录

Резюме темы

  • Чтобы найти количество повторяющихся записей, нам нужно подумать о запросах агрегации, поскольку запросы агрегации могут сжимать одну и ту же операцию агрегации ключевых слов.
  • Чтобы найти самую большую или самую маленькую запись, нам нужно подумать, что мы можем использовать sort + limit paging.
  • Операция объединения нескольких таблиц не ограничивается количеством таблиц, и одновременно могут быть соединены даже три таблицы и четыре таблицы, но обычно не рекомендуется писать таким образом после того, как количество слишком велико, и вы нужно найти другой способ, потому что вы не можете записать его  

рекомендация

отblog.csdn.net/weixin_53695360/article/details/124062896
рекомендация