Comment obtenir les deux premières entrées de chaque jour de la semaine dans MySql 5.5.34
P粉676588738
P粉676588738 2023-09-03 23:31:06
0
1
516
<p>J'ai une table MySQL avec les colonnes <strong>TENANT_NAME</strong>, <strong>MAX_CALLS</strong> et <strong>TIME_STAMP</strong> /strong> , sur demande, nous insérons des données toutes les heures et le même nom peut être répété. </p> <p>Maintenant, je souhaite obtenir les noms de groupes que je dois ajouter ainsi que la somme des appels et obtenir les 2 premières entrées pour chaque jour de la semaine. </p> <p>Par exemple : 22:49 Insérer des données</p> <pre class="brush:php;toolbar:false;">TENANT_NAME,MAX_CALLS,TIME_STAMP RS1, 20, 2022-12-07 22:49:17 RS2, 10, 2022-12-07 22:49:17 RS3, 2, 2022-12-07 22:49:17</pré> <p>Heure suivante 23h49</p> <pre class="brush:php;toolbar:false;">RS1, 15, 2022-12-07 23:49:17 RS2, 0, 2022-12-07 23:49:17 RS3, 20, 2022-12-07 23:49:17</pré> <p>De cette façon, j'ai 1 an de données</p> <p>Maintenant, je souhaite résumer le groupe de noms de 2 enregistrements pendant une semaine chaque jour</p> <p>Comme ça</p> <pre class="brush:php;toolbar:false;">RS1, 35, LUN RS3, 22, LUN... ainsi de suite RS4, 40, DIM RS2, 35, SOLEIL≪/pré> <p>J'ai essayé cette requête et j'ai pu regrouper par nom et nombre total d'appels et afficher DAYNAME, mais je veux les 2 premiers enregistrements pour chaque jour de la semaine. </p> <pre class="brush:php;toolbar:false;">sélectionnez a.TENANT_NAME,SUM(a.MAX_CALLS),DAYNAME(a.TIME_STAMP) de TENANT_LIC_DISTRIBUTION AS un groupe par a.TENANT_NAME,day(a.TIME_STAMP ) commande par a.MAX_CALLS,a.TIME_STAMP ; RS1, 35, LUN RS3, 22, LUN RS2, 10, LUN RS3, 30, MAR RS2, 20, MAR RS1, 10, MAR.... ainsi de suite RS1, 20, DIM RS2, 10, DIM RS3, 1, SOLEIL≪/pré> <p>Je veux l'obtenir comme ça</p> <pre class="brush:php;toolbar:false;">RS1, 35, LUN RS3, 22, LUN RS3, 30, MAR RS2, 20, MAR.... ainsi de suite RS1, 20, DIM RS2, 10, SOLEIL</pré> <p>S'il vous plaît, aidez-moi</p> <p>Merci</p>
P粉676588738
P粉676588738

répondre à tous(1)
P粉466643318

Essayez d'utiliser les fonctions de fenêtreautour de la requête globale pour ajouter des numéros de ligne, puis limiter par numéro de ligne. C'est une façon.

WITH rank_tenant
AS (
    SELECT TENANT_NAME, 
    DAY, 
    CALLS, 
    row_number() OVER (
            PARTITION BY TENANT_NAME 
            ORDER BY CALLS DESC
            ) AS row_num
    FROM (select 
          TENANT_NAME,
          DAYNAME(TIME_STAMP) as DAY,
          SUM(MAX_CALLS) as CALLS
          from TENANT_LIC_DISTRIBUTION
          group by TENANT_NAME, DAY) as t1
    )
SELECT TENANT_NAME,
    DAY,
    CALLS
FROM rank_tenant
WHERE row_num <= 2;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal