Correlated Subqueries का उपयोग
एक correlated subquery outer query की row refer करता है और प्रति row एक बार चलता है।
In this page:
Syntax
SELECT columns
FROM table_name outer_alias
WHERE column > (
SELECT AVG(column) FROM table_name WHERE group_column = outer_alias.group_column
);
Correlated Subqueries
Inner query outer query से एक column इस्तेमाल करती है, जैसे हर employee की salary को उनके अपने department के average से compare करना। ये expressive हैं लेकिन बड़े data पर slow हो सकती हैं, और अक्सर एक join या window function की तरह faster होती हैं।
Planner कभी-कभी इन्हें automatically joins में बदल देता है।
Note:
एक correlated subquery इस्तेमाल करने से पहले एक window function या join consider करें।
उदाहरण: Correlated subqueries
CREATE TABLE emp (id INTEGER PRIMARY KEY, name TEXT, dept TEXT, salary INTEGER);
INSERT INTO emp VALUES (1,'Ada','eng',100),(2,'Bob','eng',80),(3,'Cy','ops',60),(4,'Di','ops',70);
SELECT e.name, e.dept, e.salary FROM emp e WHERE e.salary > (SELECT AVG(salary) FROM emp WHERE dept = e.dept) ORDER BY e.id;
SELECT name, (SELECT COUNT(*) FROM emp x WHERE x.dept = e.dept) AS dept_size FROM emp e ORDER BY id;
-- Output:
-- name | dept | salary
-- Ada | eng | 100
-- Di | ops | 70
-- name | dept_size
-- Ada | 2
-- Bob | 2
-- Cy | 2
-- Di | 2
Login to try C/C++/Java/PHP code in the editor
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the
view already swaps in the hi_ translation fields (or blanks these
out if untranslated), so this renders correctly for both languages
without a lang_code check here. #}
आम गलतियां
- यह मान लेना कि correlated subqueries एक बार चलती हैं
- unindexed columns पर correlate करना
- outer row refer करने के लिए alias भूल जाना
चैप्टर सारांश
- outer query के columns refer करता है
- प्रति outer row evaluate होता है
- बड़ी tables पर slow हो सकता है
- Joins और windows faster हो सकते हैं
🔒
Chapter Quiz — Complete all 7 topics to unlock
0/7 topics done
Complete these topics first: