Terima kasih terlebih dahulu atas sokongan anda. Saya sedang belajar SQL dan menjana beberapa data untuk dimainkan, tetapi saya terperangkap pada satu perkara mudah. Jadual dalam tangkapan skrin di bawah menunjukkan sebahagian daripada jadual jualan20 saya, yang menunjukkan jualan yang dicapai oleh setiap pekerja pada tahun 2020 berserta maklumat wilayah dan tarikh.
Jualan Meja 20
Saya mempunyai jadual yang sama dari 2021. Apa yang saya mahu lakukan ialah; saya ingin memberikan nama pekerja, wilayah, jumlah jualan yang dicapai oleh pekerja pada tahun 2020 dan 2021. Saya menulis pertanyaan berikut tetapi ia tidak memberikan nombor yang betul. Ia membawa sesuatu yang lebih tinggi daripada yang sepatutnya. Perkara penting ialah pekerja pada 2020 dan 2021 adalah berbeza. Sebagai contoh, terdapat pekerja baharu pada tahun 2021, bermakna dia harus disenaraikan juga, tetapi lajur 2020 untuk pekerja itu hendaklah kosong.
Pertanyaan saya:
SELECT sales20.staff, sales20.region, SUM(sales20.amount) AS Total_20, SUM(sales21.amount) AS Total_21 FROM sales20 JOIN sales21 ON sales20.staff = sales21.staff GROUP BY staff, region
Tangkapan skrin separa keputusan:
Hasil:
Boleh beritahu saya apa salah saya?
Apabila anda perlu menggabungkan dua jadual, anda akan menyertainya -
Anda perlu menyertai 2 jadual berdasarkan orang dan wilayah untuk penyertaan satu lawan satu. Jika anda menyertai hanya berdasarkan pekerja maka ia akan melakukan satu kepada banyak penyertaan supaya anda akan mendapat output yang rosak.
Pendekatan lain ialah menggabungkan data daripada kedua-dua jadual dan kemudian melakukan pengagregatan atas dasar itu. Ini sepatutnya memberi anda hasil yang tepat.