WITH की मदद से अपनी क्वेरियों को नामित चरणों में व्यवस्थित करें और CTE को रूपांतरणों की एक पाइपलाइन की तरह जोड़ें।
इस पाठ को Kodokon में खोलेंतीन स्तर गहरी नेस्टेड एक सबक्वेरी अंदर से बाहर की ओर पढ़ी जाती है: अपठनीय और छह महीने बाद दोबारा देखना असंभव। CTE (Common Table Expression, यानी WITH क्लॉज़) पढ़ने का क्रम पलट देता है: आप हर मध्यवर्ती चरण को ठीक वैसे ही नाम देते हैं जैसे किसी फ़ंक्शन को देते, और क्वेरी ऊपर से नीचे पढ़ी जाती है। इस डेटासेट को sqliteonline.com या sqlite3 में लोड करें।
CREATE TABLE payments (
id INTEGER PRIMARY KEY,
customer TEXT NOT NULL,
paid_at TEXT NOT NULL,
amount REAL NOT NULL
);
INSERT INTO payments (customer, paid_at, amount)
VALUES
('alice', '2026-01-10', 120.0),
('bruno', '2026-01-22', 80.0),
('alice', '2026-02-05', 60.0),
('chloe', '2026-02-18', 200.0),
('bruno', '2026-03-03', 40.0),
('alice', '2026-03-15', 90.0),
('chloe', '2026-03-28', 150.0),
('bruno', '2026-04-09', 300.0);मूल सिंटैक्स: WITH name AS (SELECT ...) के बाद मुख्य क्वेरी, जो name को एक साधारण टेबल की तरह उपयोग करती है। यहाँ, हम substr से तारीख में से महीना निकालकर मासिक राजस्व की गणना करते हैं (SQLite की तारीखें ISO 8601 टेक्स्ट हैं, जो किसी मानक के बजाय एक इंजन का चुनाव है)।
WITH monthly AS (
SELECT substr(paid_at, 1, 7) AS month,
SUM(amount) AS revenue
FROM payments
GROUP BY month
)
SELECT * FROM monthly ORDER BY month;असली ताकत चेनिंग से आती है: एक ही WITH, अल्पविरामों से अलग किए गए कई CTE, जिनमें से हर एक अपने से पहले परिभाषित CTE को पढ़ सकता है। आप एक पाइपलाइन बनाते हैं: एग्रीगेट करें, एक सांख्यिकी की गणना करें, तुलना करें। यहाँ, हम उन महीनों को ढूँढते हैं जिनका राजस्व मासिक औसत से अधिक है (अपेक्षित: 2026-03 और 2026-04, औसत 260 होने के कारण)।
WITH monthly AS (
SELECT substr(paid_at, 1, 7) AS month,
SUM(amount) AS revenue
FROM payments
GROUP BY month
),
stats AS (
SELECT AVG(revenue) AS avg_revenue
FROM monthly
)
SELECT m.month, m.revenue,
ROUND(s.avg_revenue, 1) AS avg_all
FROM monthly AS m
CROSS JOIN stats AS s
WHERE m.revenue > s.avg_revenue
ORDER BY m.month;