Common Table Expressions

SQL में Data Manipulation

Mona Khalil

Data Scientist, Greenhouse Software

जब आप सबक्वेरी जोड़ते हैं...

  • क्वेरी की जटिलता तेजी से बढ़ती है!
    • जानकारी को ट्रैक करना मुश्किल हो सकता है

समाधान: Common Table Expressions!

SQL में Data Manipulation

Common Table Expressions

Common Table Expressions (CTEs)

  • मुख्य क्वेरी से पहले घोषित टेबल
  • बाद में FROM स्टेटमेंट में नाम देकर संदर्भित

CTEs सेट करना

WITH cte AS (
    SELECT col1, col2
    FROM table)

SELECT AVG(col1) AS avg_col FROM cte;
SQL में Data Manipulation

`FROM` में एक सबक्वेरी लें

SELECT
  c.name AS country,
  COUNT(s.id) AS matches
FROM country AS c
INNER JOIN (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10) AS s
ON c.id = s.country_id
GROUP BY country;
| country     | matches |
|-------------|---------|
| England     | 3       |
| Germany     | 1       |
| Netherlands | 1       |
| Spain       | 4       |
SQL में Data Manipulation

इसे शुरुआत में रखें

(
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10
)
SQL में Data Manipulation

इसे शुरुआत में रखें

WITH s AS (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10
)
SQL में Data Manipulation

CTE दिखाएँ

WITH s AS (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10
)
SELECT
  c.name AS country,
  COUNT(s.id) AS matches
FROM country AS c
INNER JOIN s
ON c.id = s.country_id
GROUP BY country;
| country     | matches |
|-------------|---------|
| England     | 3       |
| Germany     | 1       |
| Netherlands | 1       |
| Spain       | 4       |
SQL में Data Manipulation

सभी CTE दिखाएँ

WITH s1 AS (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10),
s2 AS (                              -- नई सबक्वेरी
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) <= 1
)
SELECT
  c.name AS country,
  COUNT(s1.id) AS high_scores,
  COUNT(s2.id) AS low_scores         -- नया कॉलम
FROM country AS c
INNER JOIN s1
ON c.id = s1.country_id
INNER JOIN s2                        -- नया जॉइन
ON c.id = s2.country_id
GROUP BY country;
SQL में Data Manipulation

CTEs क्यों उपयोग करें?

  • एक बार चलती है

    • फिर CTE मेमोरी में स्टोर होती है
    • क्वेरी परफॉर्मेंस बेहतर होता है
  • क्वेरियों का संगठन बेहतर होता है

  • अन्य CTE को संदर्भित करना

  • खुद को संदर्भित करना (SELF JOIN)
SQL में Data Manipulation

अभ्यास करते हैं!

SQL में Data Manipulation

Preparing Video For Download...