ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 14 · 3లో పాఠం 1కోర్సులో 53/57~12 min
మాడ్యూల్ పాఠాలు (1/3)

CTEలకు పరిచయం (WITH)

CTEలకు పరిచయం (WITH)

త్వరలో లేదా తరువాత ప్రతి ఒక్కరికీ ఇది జరుగుతుంది: మీరు అగ్రిగేషన్ ఫలితం ఆధారంగా డేటాను ఫిల్టర్ చేయాలి, ఆపై ఆ ఫిల్టర్‌ని తీసుకుని, మరో సమగ్ర ప్రశ్నతో చేరండి. మీరు SELECTని SELECT లోపల రాయడం ప్రారంభించండి, ఇది మరో SELECTలో FROMలో ముగుస్తుంది.

ఫలితం? స్పఘెట్టి SQL, ఏ మానవునికీ చదవలేని ప్రశ్న.

CTEలు (కామన్ టేబుల్ ఎక్స్‌ప్రెషన్స్) ఈ గందరగోళాన్ని విడదీస్తాయి. మీరు వాటిని WITH కీవర్డ్‌తో సక్రియం చేస్తారు, ఇది తాత్కాలికంగా పేరు పెట్టబడిన ప్రశ్నలను నిర్వచించడానికి మరియు చివరి ప్రశ్నలో వాటిని "వర్చువల్ పట్టికలు"గా మళ్లీ ఉపయోగించేందుకు మిమ్మల్ని అనుమతిస్తుంది.

ప్రాథమిక సింటాక్స్

SQL
WITH premium_customers AS (
  SELECT customer_id, SUM(total_amount) AS total_spent
  FROM orders
  GROUP BY customer_id
  HAVING SUM(total_amount) > 1000
)
SELECT customers.first_name, premium_customers.total_spent
FROM customers
JOIN premium_customers ON customers.id = premium_customers.customer_id;

మీరు చూడగలిగినట్లుగా, దిగువన ఉన్న ప్రధాన ప్రశ్న నిజమైన పట్టిక వలె premium_customers నుండి చదవబడుతుంది! మరియు ఇది నెస్టెడ్ సబ్‌క్వెరీలతో కూడిన మెగా ఇన్నర్-జాయిన్ కంటే చాలా చదవగలిగేది.

వ్యాయామం#sql.m14.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

మేము చాలా ఖరీదైన ఉత్పత్తులను కోరుకుంటున్నాము. 'ప్రైస్ > 500' ఉన్న 'ప్రొడక్ట్స్' నుండి 'id' మరియు 'price'ని ఎంచుకోవడానికి 'luxury_products' అనే CTEని ఉపయోగించండి. ఆపై ఈ CTEలో ప్రధాన ప్రశ్నను అమలు చేయండి మరియు ప్రతిదీ (*) చూపండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

లగ్జరీ_ప్రొడక్ట్‌లతో ప్రారంభించండి (...) ఆపై లగ్జరీ_ప్రొడక్ట్‌ల నుండి * ఎంచుకోండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#sql.m14.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

మేము సమీక్షలు వ్రాసే వినియోగదారులను కనుగొనాలనుకుంటున్నాము. 'సమీక్షలు' నుండి ప్రత్యేకమైన (DISTINCT) 'customer_id' విలువలను సంగ్రహించే CTE 'సమీక్షకులు'ని సృష్టించండి. ఆపై 'కస్టమర్స్' టేబుల్ నుండి 'id', 'first_name', 'last_name'ని సంగ్రహించండి మరియు idలోని 'రివ్యూయర్స్' CTEతో \`JOIN\` చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సమీక్షకులతో పాటు (సమీక్షల నుండి విభిన్న కస్టమర్_ఐడిని ఎంచుకోండి) కస్టమర్‌ల నుండి ఐడి, మొదటి_పేరు, చివరి_పేరును ఎంపిక చేసుకోండి కస్టమర్‌లలో రివ్యూయర్‌లలో చేరండి = reviewers.customer_id;

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది