SQL में Data Manipulation
Mona Khalil
Data Scientist, Greenhouse Software
समाधान: 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;
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 |
(
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10
)
WITH s AS (
SELECT country_id, id
FROM match
WHERE (home_goal + away_goal) >= 10
)
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 |
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;
एक बार चलती है
क्वेरियों का संगठन बेहतर होता है
अन्य CTE को संदर्भित करना
SELF JOIN)SQL में Data Manipulation