Bagaimana untuk mendapatkan dua penyertaan pertama setiap hari dalam seminggu dalam MySql 5.5.34
P粉676588738
P粉676588738 2023-09-03 23:31:06
0
1
524
<p>Saya mempunyai jadual MySQL dengan lajur <strong>TENANT_NAME</strong>, <strong>MAX_CALLS</strong> dan <strong>TIME_STAMP</strong> dan <strong> /strong> atas permintaan kami memasukkan data setiap jam dan nama yang sama boleh diulang. </p> <p>Sekarang saya ingin mendapatkan nama kumpulan yang perlu saya tambahkan dan jumlah panggilan dan mendapatkan 2 penyertaan teratas untuk setiap hari dalam seminggu. </p> <p>Contohnya: 22:49 Masukkan data</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</pra> <p>Jam seterusnya 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</pra> <p>Dengan cara ini, saya mempunyai 1 tahun data</p> <p>Sekarang saya ingin meringkaskan kumpulan nama 2 rekod selama seminggu setiap hari</p> <p>Seperti ini</p> <pre class="brush:php;toolbar:false;">RS1, 35, ISN RS3, 22, ISNIN... dan seterusnya RS4, 40, SUN RS2, 35, SUN</pre> <p>Saya mencuba pertanyaan ini dan saya dapat mengumpulkan mengikut nama dan jumlah panggilan serta menunjukkan DAYNAME tetapi saya mahukan 2 rekod teratas untuk setiap hari dalam seminggu. </p> <pre class="brush:php;toolbar:false;">pilih a.TENANT_NAME,SUM(a.MAX_CALLS),DAYNAME(a.TIME_STAMP) daripada TENANT_LIC_DISTRIBUTION AS kumpulan oleh a.TENANT_NAME,day(a.TIME_STAMP ) pesanan melalui a.MAX_CALLS,a.TIME_STAMP; RS1, 35, ISN RS3, 22, ISN RS2, 10, ISN RS3, 30, SELASA RS2, 20, SELASA RS1, 10, TUE....seterusnya RS1, 20, SUN RS2, 10, SUN RS3, 1, SUN</pre> <p>Saya mahu mendapatkannya seperti ini</p> <pre class="brush:php;toolbar:false;">RS1, 35, ISN RS3, 22, ISN RS3, 30, SELASA RS2, 20, TUE.... seterusnya RS1, 20, SUN RS2, 10, SUN</pre> <p>Tolong bantu saya</p> <p>Terima kasih</p>
P粉676588738
P粉676588738

membalas semua(1)
P粉466643318

Cuba gunakan fungsi tetingkapdi sekeliling pertanyaan agregat untuk menambahkan nombor baris dan kemudian hadkan mengikut nombor baris. Ini adalah satu cara.

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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan