مرکزی مواد پر جائیں
ماڈیول 14 · سبق 2 از 3کورس میں 54/57~15 min
ماڈیول اسباق (2/3)

متعدد اور زنجیروں سے جڑے ہوئے CTEs

متعدد اور زنجیروں والے CTEs

جب آپ متعدد کو ایک ساتھ جوڑتے ہیں تو اظہار کے ساتھ کی خوبصورتی واقعی چمکتی ہے۔ آپ ایک قطار میں کئی CTEs کی وضاحت کر سکتے ہیں، انہیں کوما سے الگ کر سکتے ہیں۔

اور یہاں کچھ ایسا ہے جو ری فیکٹرنگ پیوریسٹ پسند کرتے ہیں: بعد میں CTEs پہلے CTEs سے ڈیٹا پڑھ سکتے ہیں، ترتیب وار حسابات کو ٹکڑے ٹکڑے کرکے کھولتے ہوئے!

ملٹی سی ٹی ای کی مثال

SQL
WITH premium_customers AS (
  SELECT customer_id, SUM(total_amount) AS total_spent
  FROM orders
  GROUP BY customer_id
),
top_customers AS (
  SELECT * FROM premium_customers
  WHERE total_spent > 5000
)
SELECT c.first_name, tc.total_spent
FROM customers c
JOIN top_customers tc ON c.id = tc.customer_id;

یہ بلاک طرز کی پروگرامنگ ہے! ہر بلاک صرف ایک کام کرتا ہے۔

ورزش#sql.m14.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

دو ترتیب وار CTEs کی وضاحت کریں: \n1) 'order_totals' 'customer_id' کی گنتی کرتا ہے اور 'order_count' کو 'COUNT(*)` کا استعمال کرتے ہوئے 'orders' سے رکھا جاتا ہے۔\n2) 'gold_users' پڑھتا ہے 'order_totals' کے ساتھ گاہکوں کو فلٹر کرنے کے ساتھ 'order_custotal' کے ساتھ۔ ('first_name' اور 'last_name' کو نکالنا) 'gold_users' (ON c.id = g.customer_id) کے ساتھ، اور ان کا 'order_count' بھی دکھائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

الگ الگ آرڈر_کل اور سونے کے_صارفین کو کوما کے ساتھ (کوئی سیکنڈ نہیں!)

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#sql.m14.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

اب میٹرکس کو آسان بنانے کے لیے متعدد CTEs کا استعمال کریں: 'max_price' بنائیں ('order_items' سے `MAX(unit_price)` کا استعمال کرتے ہوئے 'max_value' کے ساتھ ایک قطار نکالتا ہے)۔ مرکزی استفسار میں، 'order_items' سے ہر 'product_id' اور 'unit_price' کو نکالیں اور دکھائیں کہ یہ زیادہ سے زیادہ قیمت سے کتنا مختلف ہے، کمپیوٹنگ '(SELECT max_value FROM max_price) - unit_price AS فرق'۔ کوئی شمولیت نہیں — ایک قیمت حاصل کرنے کے لیے CTE پر ایک ذیلی سوال کا استعمال کریں!

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

زیادہ سے زیادہ_قیمت کے ساتھ (...) پروڈکٹ_آئی ڈی، یونٹ_قیمت منتخب کریں، (زیادہ سے زیادہ_قیمت منتخب کریں) - آرڈر_آئٹمز سے یونٹ_قیمت؛

3 کوششوں کے بعد حل دستیاب ہے۔