So erhalten Sie die ersten beiden Einträge jedes Wochentags in MySql 5.5.34
P粉676588738
P粉676588738 2023-09-03 23:31:06
0
1
525
<p>Ich habe eine MySQL-Tabelle mit den Spalten <strong>TENANT_NAME</strong>, <strong>MAX_CALLS</strong> und <strong>kein Primärschlüssel </strong> /strong> , auf Anfrage fügen wir stündlich Daten ein und der gleiche Name kann wiederholt werden. </p> <p>Jetzt möchte ich die Gruppennamen, die ich hinzufügen muss, und die Summe abrufen und die beiden besten Einträge für jeden Tag der Woche erhalten. </p> <p>Zum Beispiel: 22:49 Daten einfügen</p> <pre class="brush:php;toolbar:false;">TENANT_NAME,MAX_CALLS,TIME_STAMP RS1, 20, 07.12.2022 22:49:17 RS2, 10, 07.12.2022 22:49:17 RS3, 2, 07.12.2022 22:49:17</pre> <p>Nächste Stunde 23:49</p> <pre class="brush:php;toolbar:false;">RS1, 15, 07.12.2022 23:49:17 RS2, 0, 07.12.2022 23:49:17 RS3, 20, 07.12.2022 23:49:17</pre> <p>Auf diese Weise habe ich 1 Jahr Daten</p> <p>Jetzt möchte ich die Namensgruppe von 2 Datensätzen für eine Woche jeden Tag zusammenfassen</p> <p>Gefällt mir</p> <pre class="brush:php;toolbar:false;">RS1, 35, MON RS3, 22, MON... und so weiter RS4, 40, SONNE RS2, 35, SUN</pre> <p>Ich habe diese Abfrage ausprobiert und konnte nach Name und Gesamtzahl der Anrufe gruppieren und DAYNAME anzeigen, aber ich möchte die beiden wichtigsten Datensätze für jeden Wochentag. </p> <pre class="brush:php;toolbar:false;">wählen Sie a.TENANT_NAME,SUM(a.MAX_CALLS),DAYNAME(a.TIME_STAMP) aus TENANT_LIC_DISTRIBUTION AS als Gruppe nach a.TENANT_NAME,day(a.TIME_STAMP aus ) Reihenfolge nach a.MAX_CALLS,a.TIME_STAMP; RS1, 35, MO RS3, 22, MO RS2, 10, MO RS3, 30, DI RS2, 20, DI RS1, 10, DIE.... und so weiter RS1, 20, SUN RS2, 10, SONNE RS3, 1, SUN</pre> <p>Ich möchte es so bekommen</p> <pre class="brush:php;toolbar:false;">RS1, 35, MON RS3, 22, MO RS3, 30, DI RS2, 20, DIE.... und so weiter RS1, 20, SUN RS2, 10, SUN</pre> <p>Bitte helfen Sie mir</p> <p>Vielen Dank</p>
P粉676588738
P粉676588738

Antworte allen(1)
P粉466643318

尝试使用窗口函数围绕聚合查询附加行号,然后按行号进行限制。这是一种方法。

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;
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage