Pengumpulan SQL Mengikut Bulan dan Tahun
Dalam SQL, mengumpulkan data mengikut bulan dan tahun ialah tugas biasa apabila menganalisis data temporal. Untuk mencapai matlamat ini, anda boleh menggunakan fungsi MONTH() dan YEAR() bersama-sama klausa GROUP BY.
Pernyataan Masalah
Seorang pengguna menghadapi masalah semasa membuat pertanyaan jadual Pesanan untuk memaparkan lajur 'tarikh' sebagai "bulan-tahun" (cth., "9-2011"). Mereka telah menggunakan pertanyaan berikut:
SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY MONTH(date), YEAR(date)
Walau bagaimanapun, pertanyaan ini hanya memaparkan bulan (mis., "9") dan pengguna mahu memasukkan kedua-dua bulan dan tahun dalam output.
Penyelesaian
Untuk menyelesaikan isu ini, anda boleh menggunakan fungsi CAST() untuk menukar bulan dan tahun nilai ke dalam rentetan dan menggabungkannya dengan tanda sempang di antaranya. Berikut ialah pertanyaan yang dikemas kini:
SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))
Pertanyaan ini akan mengembalikan lajur 'tarikh' dalam format yang diingini, memaparkan kedua-dua bulan dan tahun.
Pilihan lain ialah menggunakan sifar pendahuluan semasa menghantar ke memastikan pemformatan yang konsisten. Ini boleh dicapai menggunakan fungsi right():
GROUP BY CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2)
Pendekatan ini akan menambah sifar pendahuluan kepada nilai bulan satu digit, menghasilkan pemformatan seragam (mis., "09-2011").
Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan Data SQL mengikut Bulan dan Tahun dan Format Output sebagai 'Bulan-Tahun'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!