如何在MySql 5.5.34中取得每週每天的前兩個條目
P粉676588738
P粉676588738 2023-09-03 23:31:06
0
1
526
<p>我有一個MySQL 表,其中包含<strong>TENANT_NAME</strong>、<strong>MAX_CALLS</strong>TENANT_NAME</strong>、<strong>MAX_CALLS</strong> 和<strong>TIME_STAMP</strong> 列,並且< 和<strong>TIME_STAMP</strong> 列,且< </strong> ,根據要求,我們每小時插入數據,並且相同的名稱可以重複。 </p> <p>現在我想取得需要新增群組名稱和求和呼叫並取得一週內每天的前 2 個條目。 </p> <p>例如:22:49 插入資料</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</pre> <p>下一小時 23:49</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</pre> <p>這樣,我就有了1年的數據</p> <p>現在我想要每天總結一週的 2 筆記錄的名稱群組</p> <p>像這樣</p> <pre class="brush:php;toolbar:false;">RS1, 35, MON RS3, 22, MON... so on RS4, 40, SUN RS2, 35, SUN</pre> <p>我嘗試了這個查詢,我能夠對姓名和總呼叫進行分組,並顯示 DAYNAME,但我想要一周內每天的前 2 條記錄。 </p> <pre class="brush:php;toolbar:false;">select a.TENANT_NAME,SUM(a.MAX_CALLS),DAYNAME(a.TIME_STAMP) from TENANT_LIC_DISTRIBUTION AS a group by a.TENANT_NN,day(a.TIME_AMP ) order by a.MAX_CALLS,a.TIME_STAMP; RS1, 35, MON RS3, 22, MON RS2, 10, MON RS3, 30, TUE RS2, 20, TUE RS1, 10, TUE.... so on RS1, 20, SUN RS2, 10, SUN RS3, 1, SUN</pre> <p>我想像這樣取得</p> <pre class="brush:php;toolbar:false;">RS1, 35, MON RS3, 22, MON RS3, 30, TUE RS2, 20, TUE.... so on RS1, 20, SUN RS2, 10, SUN</pre> <p>請幫我</p> <p>謝謝</p>
P粉676588738
P粉676588738

全部回覆(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;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板