Rumah > Soal Jawab > teks badan
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.
P粉6749994202024-04-01 00:00:13
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 ;