Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menggabungkan 3 jadual berbeza ke dalam satu jadual untuk mencipta data agregat?

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粉891237912P粉891237912183 hari yang lalu280

membalas semua(1)saya akan balas

  • P粉674999420

    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           ;

    https://dbfiddle.uk/S61QeLBX

    balas
    0
  • Batalbalas