Base de données LeetCode Pratique quotidienne (3)

teneur

avant-propos

Thème 1 : Analyse du gameplay

Thème 2 : Clients avec le plus de commandes

Thème 3 : Grands pays

Sujet 4 : Numéros consécutifs

Résumé du sujet


avant-propos

  • Revoir les faits saillants précédents

Pratique quotidienne de la base de LeetCode (1)données 2 )

Thème 1 : Analyse du gameplay

511. Analyse du gameplay I

filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  • Exigences de la question : obtenir la date de la première connexion de chaque joueur à la plateforme
  • Idée de traitement : la date de connexion à la plate-forme pour la première fois s'est avérée être la date de connexion à la plate-forme pour la première fois, qui est la plus petite event_date dans le player_id correspondant, donc l'idée est sortie, et vous peut interroger directement min(date) avec une requête agrégée.   
  • Comment penser à utiliser une requête agrégée, il y a d'abord plusieurs dates de connexion, mais nous n'avons besoin que de la plus petite, nous avons donc pensé à compresser via une requête agrégée, qui peut être utilisée en combinaison avec des fonctions agrégées.Les fonctions agrégées couramment utilisées sont attachées comme suit

filigrane, 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;

Thème 2 : Clients avec le plus de commandes

586. Clients avec le plus de commandes

filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_14, color_FFFFFF, t_70, g_se, x_16

  •  Exigence de titre : obtenir le client avec le plus de commandes
  • Sens de réflexion : nous devons obtenir le client avec le plus grand nombre de commandes. La première étape consiste à calculer le nombre de commandes. Pour calculer le nombre de commandes, nous devons agréger la requête, compter (numéro_client) ou compter (*) pour obtenir le nombre de commandes, puis directement en fonction du nombre de commandes de Trier du plus grand au plus petit. Le premier élément est le nombre de commandes max requises par les clients (pour obtenir le plus grand, lequel est le plus important et lequel est le plus petit , il faut penser trier + limiter la pagination)
select 
    customer_number
from 
    orders
group by customer_number
order by count(*) desc
limit 0, 1; # 获取第一条记录

Thème 3 : Grands pays

595. Grand pays

filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  •  Exigences relatives au titre : nous devons filtrer les principaux pays selon les règles suivantes

filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_20, color_FFFFFF, t_70, g_se, x_16

  •  Idées de résolution de problèmes : C'est très simple, et cela peut être réalisé en interrogeant directement une condition où pour filtrer les grands pays.
select 
    name, population, area
from 
    world
where 
    area >= 3000000 or population >= 25000000;
-- where 条件筛选大国

Sujet 4 : Numéros consécutifs

180. Numéros consécutifs

filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_17, color_FFFFFF, t_70, g_se, x_16

  • filigrane, type_d3F5LXplbmhlaQ, shadow_50, text_Q1NETiBA5bCP5p2wMzEy, size_13, color_FFFFFF, t_70, g_se, x_16
  • Exigences relatives à l'objet : 1. Se produit en continu 2. Se produit trois fois
  • Parce que nous devons rechercher à partir de la même table, il n'y a qu'une seule table, et la relation est le nombre d'enregistrements répétés qui apparaissent trois fois de suite dans la table, il est donc facile de penser que nous pouvons interroger via l'auto-jointure.    Ensuite, il y aura certainement des répétitions dans le processus de requête, car il équivaut à la même La table est connectée deux fois à elle-même.        Par conséquent, une opération distincte doit être effectuée
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条件保证连续记录

Résumé du sujet

  • Pour trouver le nombre d'enregistrements répétés, nous devons penser aux requêtes d'agrégation, car les requêtes d'agrégation peuvent compresser la même opération d'agrégation de mots clés.
  • Pour trouver le plus grand ou le plus petit enregistrement, nous devons penser que nous pouvons utiliser sort + limit pagination
  • L'opération de jointure multi-tables n'est pas limitée au nombre de tables, et même trois tables et quatre tables peuvent être connectées en même temps, mais il n'est généralement pas recommandé d'écrire de cette manière après que le nombre est trop grand, et vous besoin de trouver un autre moyen, parce que vous ne pouvez pas l'écrire  

Je suppose que tu aimes

Origine blog.csdn.net/weixin_53695360/article/details/124062896
conseillé
Classement