Sobes.tech
Senior

SQL առաջադեմ մակարդակի առաջադրանք: ցույց տալ յուրաքանչյուր հաճախորդի համար վճարման ID, հաճախորդի ID և առաջին վճարից հետո անցած օրերի քանակը

sobes.tech AI

Պատասխան AI-ից

Խնդրի լուծման համար անհրաժեշտ է որոշել յուրաքանչյուր հաճախորդի առաջին վճարման ամսաթիվը, ապա հաշվել օրերի տարբերությունը յուրաքանչյուր վճարման և այդ ամսաթվի միջև։ SQL-ի օրինակ (պատկերացնենք, որ կա payments աղյուսակ, որի սյունակներն են payment_id, client_id, payment_date):

SELECT
  p.payment_id,
  p.client_id,
  DATEDIFF(p.payment_date, first_pay.first_payment_date) AS days_from_first_payment
FROM
  payments p
JOIN
  (SELECT client_id, MIN(payment_date) AS first_payment_date
   FROM payments
   GROUP BY client_id) first_pay
ON p.client_id = first_pay.client_id;

Այստեղ ենթաէրեքը գտնում է յուրաքանչյուր հաճախորդի առաջին վճարումը, իսկ հիմնական հարցումը հաշվում է օրերի քանակը ներկայիս վճարում և առաջին վճարման միջև։