← Back to PostgreSQL Course | Chapter 8: Subqueries & CTEs | Lesson 2 of 7

Correlated Subqueries का उपयोग

एक correlated subquery outer query की row refer करता है और प्रति row एक बार चलता है।

In this page:

  1. Correlated Subqueries
Syntax
sql
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

sql
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
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. #}
आम गलतियां
  1. यह मान लेना कि correlated subqueries एक बार चलती हैं
  2. unindexed columns पर correlate करना
  3. 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:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.