cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mendapatkan dua penyertaan pertama setiap hari dalam seminggu dalam MySql 5.5.34

<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粉676588738P粉676588738439 hari yang lalu519

membalas semua(1)saya akan balas

  • P粉466643318

    P粉4666433182023-09-04 12:55:52

    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;

    balas
    0
  • Batalbalas