முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 14 · பாடம் 2 இன் 3பாடத்திட்டத்தில் 54/57~15 min
தொகுதி பாடங்கள் (2/3)

பல மற்றும் சங்கிலி CTEகள்

பல மற்றும் சங்கிலி CTEகள்

நீங்கள் பலவற்றை ஒன்றாக இணைக்கும்போது வெளிப்பாடுகளின் நேர்த்தியானது உண்மையில் ஜொலிக்கிறது. நீங்கள் ஒரு வரிசையில் பல CTE களை வரையறுக்கலாம், அவற்றை கமாவால் பிரிக்கலாம்.

மறுசீரமைப்பு தூய்மைவாதிகள் விரும்பும் ஒன்று இங்கே உள்ளது: பிற்கால CTEகள் ** முந்தைய CTE களில் இருந்து தரவைப் படிக்கலாம்**, வரிசையான கணக்கீடுகளை துண்டு துண்டாகத் திறக்கலாம்!

மல்டி-சிடிஇ எடுத்துக்காட்டு

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ஏற்றுகிறது…

இரண்டு தொடர்ச்சியான CTEகளை வரையறுக்கவும்: \n1) 'order_totals' 'customer_id' மற்றும் 'order_count' ஆகியவற்றை 'ஆர்டர்களில்' இருந்து 'COUNT(*)' ஐப் பயன்படுத்திக் கணக்கிடுகிறது.\n2) 'order_counts' மூலம் 'gold_users' படிக்கும் வாடிக்கையாளர்களை 'order_count IN >= 2' உடன் வடிகட்டுகிறது. 'gold_users' (ON c.id = g.customer_id) உடன் 'first_name' மற்றும் 'last_name'), மேலும் அவர்களின் 'order_count'ஐயும் காட்டவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தனி ஆர்டர்_மொத்தங்கள் மற்றும் தங்க_பயனர்கள் காற்புள்ளியுடன் (இரண்டாவது இல்லை!)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#sql.m14.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

இப்போது அளவீடுகளை எளிமைப்படுத்த பல CTEகளைப் பயன்படுத்துவோம்: 'max_price' ஐ உருவாக்கவும் ('order_items' இலிருந்து 'MAX(unit_price)' ஐப் பயன்படுத்தி 'max_value' உடன் ஒற்றை வரிசையைப் பிரித்தெடுக்கிறது). முக்கிய வினவலில், ஒவ்வொரு 'product_id' மற்றும் 'unit_price' ஐ 'order_items' இலிருந்து பிரித்தெடுத்து, அதிகபட்ச விலையிலிருந்து எவ்வளவு வேறுபடுகிறது என்பதைக் காட்டவும், '(max_value FROM max_price) - unit_price AS வித்தியாசம்' என்பதைக் கணக்கிடுகிறது. சேர வேண்டாம் - ஒற்றை மதிப்பைப் பெற CTE இல் துணை வினவலைப் பயன்படுத்தவும்!

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

அதிகபட்ச_விலை AS (...) SELECT product_id, unit_price, (max_value from max_price) - unit_price from order_items;

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்