Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Rekod Dengan Cekap Dalam Julat Tarikh dalam SQL?

Bagaimana untuk Mengira Rekod Dengan Cekap Dalam Julat Tarikh dalam SQL?

Barbara Streisand
Lepaskan: 2024-12-20 22:39:10
asal
502 orang telah melayarinya

How to Efficiently Count Records Within a Date Range in SQL?

Mengira Kiraan Rekod untuk Tarikh Antara Dua Tarikh

Untuk mengira bilangan rekod yang berada dalam julat tarikh bagi carta berbilang paksi, kita mesti mengatasi ketidakpadanan jenis operan dalam pertanyaan asal. Untuk menangani isu ini, kami meneroka pendekatan alternatif yang memanfaatkan jadual atau fungsi pengiraan.

Satu penyelesaian berprestasi tinggi melibatkan penggunaan jadual atau fungsi pengiraan. Fungsi pengiraan terkenal Itzik Ben-Gan boleh digabungkan seperti berikut:

DECLARE @StartDate date = '2020-11-01', @EndDate date = '2021-02-22';

  WITH
    L0 AS ( SELECT 1 AS c 
            FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),
                        (1),(1),(1),(1),(1),(1),(1),(1)) AS D(c) ),
    L1 AS ( SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B ),
    L2 AS ( SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B ),
    Nums AS ( SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum
              FROM L2 )
    Date_Range_T (d_range) AS (
      SELECT TOP(DATEDIFF(day, @StartDate, @EndDate) + 1)
          DATEADD(day, rownum - 1, @StartDate) AS d_range,
          DATEADD(day, rownum, @StartDate) AS d_rangeNext
      FROM Nums
    )
SELECT d_range, COUNT(Id) AS Total 
FROM Date_Range_T 
LEFT JOIN tbl_Support_Requests R
    ON R.CreatedDate >= T.d_range AND R.CreatedDate < T.d_rangeNext
GROUP BY d_range
ORDER BY d_range ASC
Salin selepas log masuk

Pendekatan ini menjana jadual julat tarikh untuk tempoh yang ditentukan, yang kemudiannya digunakan dalam gabungan kiri dengan jadual tbl_Support_Requests untuk mengira rekod dalam setiap julat tarikh.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Rekod Dengan Cekap Dalam Julat Tarikh dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan