תרגול SQL מספר 1035 – חיבור טבלת לקוחות

תרגיל זה הוא ברמת קושי קלה ומתרגל אלמנטים חיבור Left join , Inner join ו full join בשפת SQL
לעמוד התרגילים המלא לחצו כאן.
התרגיל נכתב ע"י יובל מרנין.

לפניך חלק מטבלת customers מתוך דאטה-בייס בשם e_commerce

avg_ordersum_ordersorderslast_orderfirst_ordercountrycustomer_id
214.38315646744,073.2799728811192011-12-052011-02-25United Kingdom16,592
390.21081358151,447,682.11838723353,7102011-12-092010-12-01Unspecified[NULL]
112.7099992633450.839997053142011-11-292011-05-04United Kingdom14,173
282.96999716762,263.759977340782011-11-062011-01-17United Kingdom13,527
187.3499979824374.699995964822011-10-072011-09-04United Kingdom14,067
744.77399680613,723.869984030752011-09-052011-02-03Spain12,502
1,013.00999259951,013.009992599512011-11-102011-11-10United Kingdom17,197
153.1199979782153.119997978212011-10-122011-10-12France12,602
595.49768720687,741.4699336886132011-03-172010-12-01United Kingdom13,093
435.9687502983,487.750002384282011-10-122010-12-03Switzerland13,520
84.7033323348254.109997004332011-11-102011-06-16United Kingdom14,765
382.7999964952382.799996495212011-11-152011-11-15United Kingdom18,181
472.78166747092,836.690004825662011-10-122011-04-01United Kingdom14,852
324.62857123782,272.399998664972011-11-102010-12-02United Kingdom14,466
206.9799995422206.979999542212011-01-242011-01-24United Kingdom15,820
382.6699956506765.339991301322011-07-312011-06-21United Kingdom17,695
271.04545267062,981.4999793768112011-12-012011-01-13United Kingdom15,687
90.7249996662362.899998664942011-11-102011-09-07United Kingdom17,573
155.1700005531155.170000553112011-01-132011-01-13United Kingdom15,447
591.829127372613,612.06992957232011-12-082010-12-09Germany12,621

לטבלה customers יש טבלאות אחיות בשם: e_commerce.customers_2011_jan  ו e_commerce.customers_2011_feb שמתיחסות רק ללקוחות שרכשו בחודשים ינואר ופברואר.

  1. הסירו מטבלת customers את הלקוחות שרכשו בחודש ינואר.
    טבלת הלקוחות שרכשו בינואר היא – e_commerce.customers_2011_jan
  2. מטבלת הלקוחות השאירו רק את הלקוחות שרכשו בינואר
    * בטבלה שיצרתם הוסיפו את סכום הרכישה בינואר.
    * הוסיפו שדה עם החלק היחסי של הרכישות בינואר מכלל הרכישה של הלקוח.
  3. חברו את טבלאות customers_2011_jan ו- customers_2011_feb ב full join.
    * חשבו שדה של מספר הרכישות שהיו בינואר ושדה של מספר הרכישות בפברואר. אם לא היו רכישות רשמו 0.
    * הוסיפו שדה בשם compare שבו יהיה רשום היכן יש יותר רכישות –  JAN או FEB (אם מספר הרכישות שווה, רישמו EQUAL).
בשביל פתרונות אנא גללו למטה.

תשובה תרגיל 1

 

select

       customers.*,

from

       e_commerce.customers as customers

left join

       e_commerce.customers_2011_jan as jan

       on jan.customer_id = customers.customer_id

where

       jan.sum_orders is not null

תשובה  תרגיל 2

select

       customers.*,

       jan.sum_orders as jan_sum_orders,

       jan.sum_orders/(case when customers.sum_orders=0 then 0.000000001 else customers.sum_orders end) as share_of_jan

from

       e_commerce.customers as customers

inner join

       e_commerce.customers_2011_jan as jan

       on jan.customer_id = customers.customer_id

 

 

תשובה תרגיל 3

select

       coalesce (jan.customer_id ,feb.customer_id) as customer_id,

       coalesce (jan.orders ,0) as jan_orders,

       coalesce (feb.orders ,0) as jan_orders,

       case

             when coalesce (jan.orders ,0)>coalesce(feb.orders ,0) then 'jan'

             when coalesce (jan.orders ,0)<coalesce(feb.orders ,0) then 'feb'

             when coalesce (jan.orders ,0)=coalesce(feb.orders ,0) then 'equal'

       end as compare

from

       e_commerce.customers_2011_jan as jan

full join

       e_commerce.customers_2011_feb as feb

 

       on jan.customer_id =feb.customer_id

Yuval Marnin

לחברות המעוניינות בשירותי פרילנס או מנטורינג של אנליסט, ניתן לפנות אליי ל[email protected]