Permintaan Anda tidak deterministik sehingga tidak mengherankan Anda mendapatkan hasil yang tidak terduga. Maksud saya, Anda dapat menjalankan kueri ini pada data yang sama 5 kali dan mendapatkan 5 set hasil yang berbeda. Ini karena Anda memilih DATE(timestamp)
tetapi mengelompokkan berdasarkan WEEK(DATE(startdate))
, oleh karena itu kueri mengembalikan waktu dari baris pertama yang dilewati per minggu tanggal mulai dalam APAPUN pesan.
Perhatikan 2 baris berikut (dengan stempel waktu dalam format tanggal untuk kemudahan membaca):
TimeStamp StartDate
20120601 20120601
20120701 20120601
Kueri Anda dikelompokkan berdasarkan WEEK(StartDate)
yaitu 23, karena kedua baris mengevaluasi ke nilai yang sama, Anda akan mengharapkan hasil Anda memiliki 1 baris dengan hitungan 2.
NAMUN DATE(Timestamp)
Juga ada dalam daftar pilih dan karena tidak ada ORDER BY
pernyataan kueri tidak tahu Stempel Waktu mana yang akan dikembalikan '20120601' atau '20120701'. Jadi, bahkan pada kumpulan hasil kecil ini, Anda memiliki peluang 50:50 untuk mendapatkan:
TimeStamp COUNT
20120601 2
dan peluang 50:50 untuk mendapatkan
TimeStamp COUNT
20120701 2
Jika Anda menambahkan lebih banyak data ke kumpulan data seperti itu:
TimeStamp StartDate
20120601 20120601
20120701 20120601
20120701 20120701
Anda bisa mendapatkan
TimeStamp COUNT
20120601 2
20120701 1
atau
TimeStamp COUNT
20120701 2
20120701 1
Anda dapat melihat bagaimana dengan 37.000.000 baris Anda akan segera mendapatkan hasil yang tidak Anda harapkan dan tidak dapat diprediksi!
EDIT
Karena sepertinya Anda mencoba untuk mendapatkan awal minggu dalam hasil Anda, sementara grup demi minggu Anda dapat menggunakan yang berikut ini untuk memulai minggu (mengganti CURRENT_TIMESTAMP dengan kolom mana pun yang Anda inginkan):
SELECT DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 1 - DAYOFWEEK(CURRENT_TIMESTAMP) DAY) AS WeekStart
Anda kemudian dapat mengelompokkan menurut tanggal ini juga untuk mendapatkan hasil mingguan dan menghindari kesulitan memiliki hal-hal dalam daftar pilihan Anda yang tidak termasuk dalam grup Anda.