தொகுதி பாடங்கள் (2/3)
பல மற்றும் சங்கிலி CTEகள்
பல மற்றும் சங்கிலி CTEகள்
நீங்கள் பலவற்றை ஒன்றாக இணைக்கும்போது வெளிப்பாடுகளின் நேர்த்தியானது உண்மையில் ஜொலிக்கிறது. நீங்கள் ஒரு வரிசையில் பல CTE களை வரையறுக்கலாம், அவற்றை கமாவால் பிரிக்கலாம்.
மறுசீரமைப்பு தூய்மைவாதிகள் விரும்பும் ஒன்று இங்கே உள்ளது: பிற்கால CTEகள் ** முந்தைய CTE களில் இருந்து தரவைப் படிக்கலாம்**, வரிசையான கணக்கீடுகளை துண்டு துண்டாகத் திறக்கலாம்!
மல்டி-சிடிஇ எடுத்துக்காட்டு
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;இது பிளாக்-ஸ்டைல் புரோகிராமிங்! ஒவ்வொரு தொகுதியும் ஒரு வேலையை மட்டுமே செய்கிறது.
இரண்டு தொடர்ச்சியான 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 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
இப்போது அளவீடுகளை எளிமைப்படுத்த பல 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 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்