Semoga anda semua sihat! :D
Saya memerlukan bantuan anda untuk menyelesaikan tugasan berikut:
Saya perlu mencipta jadual berikut:
| Tarikh | Pendapatan daripada transaksi baharu | Pendapatan hilang kerana bergolak | Pendapatan daripada upsells |
|---|---|---|---|
| 1 Januari 2022 | $1000 | -$500 | $1000 |
| 2 Januari 2022 | $2000 | -$200 | $2000 |
Apa yang berlaku di sini ialah untuk mengumpul dan mengagregat data ini, saya perlu mendapatkan 3 jadual berbeza:
Urus niaga, Churn dan Upsells
PerdaganganJadual:
| Berdagang | Tarikh akhir | pendapatan |
|---|---|---|
| Tawaran #1 | 1 Januari 2022 | $500 |
| Tawaran #2 | 1 Januari 2022 | $500 |
| Tawaran #3 | 2 Januari 2022 | $1500 |
| Tawaran #4 | 2 Januari 2022 | $500 |
KerugianJadual:
| Rugi | Tarikh akhir | Kehilangan pendapatan |
|---|---|---|
| churn #1 | 1 Januari 2022 | -$500 |
| churn #2 | 2 Januari 2022 | -$100 |
| churn #3 | 2 Januari 2022 | -$100 |
Senarai Upsell:
| Upsell | Tarikh akhir | pendapatan |
|---|---|---|
| Upsell #1 | 1 Januari 2022 | $2000 |
| Upsell #2 | 1 Januari 2022 | -$1000 |
| Upsell #3 | 2 Januari 2022 | $2000 |
Soalan pertama ialah: Bagaimanakah saya boleh membuat arahan SQL untuk mencapai ini?
Terima kasih terlebih dahulu.
Anda boleh menggunakan subkueri untuk mengagregat jadual churn dan upsell.
Seperti yang ditunjukkan di bawah:
select d.Closing_date, sum(d.Revenue_won) as 'Revenue gained from new deals', c.`Revenue lost from churn`, u.`Revenue gained from upsell` from deals d inner join ( select Closing_date, sum(Revenue_lost) as 'Revenue lost from churn' from churns group by Closing_date ) as c on c.Closing_date=d.Closing_date inner join ( select Closing_date, sum(Revenue_won) as 'Revenue gained from upsell' from upsells u group by Closing_date ) as u on u.Closing_date=d.Closing_date group by d.Closing_date ;https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=0875563c9ab7f9385711dde21cd98b47 一个>
Tolong jangan simpan tarikh sebagai teks, anda akan menghadapi banyak kesukaran. Kalau nak format tarikh boleh guna DATE_FORMAT
Perhatian. Jika tarikh lain wujud dalam jadual transaksi tetapi tidak dalam dua jadual lain, tarikh itu akan ditapis keluar daripada keputusan. Jika anda mahu, gunakan
LEFT JOIN而不是INNER JOIN.**Edit
select d.Closing_date, d.`Revenue gained from new deals`, c.`Revenue lost from churn`, u.`Revenue gained from upsell` from ( select Closing_date, sum(Revenue_won) as 'Revenue gained from new deals' from deals group by Closing_date ) as d inner join ( select Closing_date, sum(Revenue_lost) as 'Revenue lost from churn' from churns group by Closing_date ) as c on c.Closing_date=d.Closing_date inner join ( select Closing_date, sum(Revenue_won) as 'Revenue gained from upsell' from upsells u group by Closing_date ) as u on u.Closing_date=d.Closing_date ;https://dbfiddle.uk/S61QeLBX