PostgreSQL Summary Stats और Window Functions
Michel Semaan
Data Scientist
2008 समर ओलंपिक्स में चीन और रूस के मेडल, मेडल क्लास अनुसार
| Country | Medal | Awards |
|---------|--------|--------|
| CHN | Bronze | 57 |
| CHN | Gold | 74 |
| CHN | Silver | 53 |
| CHN | Total | 184 |
| RUS | Bronze | 56 |
| RUS | Gold | 43 |
| RUS | Silver | 44 |
| RUS | Total | 143 |
SELECT Country, Medal, COUNT(*) AS Awards FROM Summer_Medals WHERE Year = 2008 AND Country IN ('CHN', 'RUS') GROUP BY Country, Medal ORDER BY Country ASC, Medal ASCUNION ALL SELECT Country, 'Total', COUNT(*) AS Awards FROM Summer_Medals WHERE Year = 2008 AND Country IN ('CHN', 'RUS') GROUP BY Country, 2 ORDER BY Country ASC;
SELECT
Country, Medal, COUNT(*) AS Awards
FROM Summer_Medals
WHERE
Year = 2008 AND Country IN ('CHN', 'RUS')
GROUP BY Country, ROLLUP(Medal)
ORDER BY Country ASC, Medal ASC;
ROLLUP एक GROUP BY सबक्लॉज़ है जो ग्रुप-स्तर एग्रीगेशन के लिए अतिरिक्त रो जोड़ता हैGROUP BY Country, ROLLUP(Medal) सभी Country और Medal स्तर के टोटल गिनेगा, फिर केवल Country स्तर के टोटल गिनेगा और उन रो में Medal को null से भरेगाSELECT
Country, Medal, COUNT(*) AS Awards
FROM summer_medals
WHERE
Year = 2008 AND Country IN ('CHN', 'RUS')
GROUP BY ROLLUP(Country, Medal)
ORDER BY Country ASC, Medal ASC;
ROLLUP हायरार्किकल है, बाएँ से दाएँ कॉलमों के अनुसार डी-एग्रीगेट करता हैROLLUP(Country, Medal) में Country-स्तर के टोटल शामिल होते हैंROLLUP(Medal, Country) में Medal-स्तर के टोटल शामिल होते हैं| Country | Medal | Awards |
|---------|--------|--------|
| CHN | Bronze | 57 |
| CHN | Gold | 74 |
| CHN | Silver | 53 |
| CHN | null | 184 |
| RUS | Bronze | 56 |
| RUS | Gold | 43 |
| RUS | Silver | 44 |
| RUS | null | 143 |
| null | null | 327 |
null होते हैं; सभी null वाली रो ग्रैंड टोटल हैMedal-स्तर के टोटल नहीं हैं, क्योंकि यह ROLLUP(Country, Medal) है, ROLLUP(Medal, Country) नहींSELECT
Country, Medal, COUNT(*) AS Awards
FROM summer_medals
WHERE
Year = 2008 AND Country IN ('CHN', 'RUS')
GROUP BY CUBE(Country, Medal)
ORDER BY Country ASC, Medal ASC;
CUBE एक नॉन-हायरार्किकल ROLLUP हैCUBE(Country, Medal) Country-स्तर, Medal-स्तर, और ग्रैंड टोटल गिनता है| Country | Medal | Awards |
|---------|--------|--------|
| CHN | Bronze | 57 |
| CHN | Gold | 74 |
| CHN | Silver | 53 |
| CHN | null | 184 |
| RUS | Bronze | 56 |
| RUS | Gold | 43 |
| RUS | Silver | 44 |
| RUS | null | 143 |
| null | Bronze | 113 |
| null | Gold | 117 |
| null | Silver | 97 |
| null | null | 327 |
Medal-स्तर के टोटल शामिल हैंSource
| Year | Quarter | Sales |
|------|---------|-------|
| 2008 | Q1 | 12 |
| 2008 | Q2 | 15 |
| 2009 | Q1 | 21 |
| 2009 | Q2 | 27 |
ROLLUP इस्तेमाल करेंCUBE इस्तेमाल करेंROLLUP(Year, Quarter)
| Year | Quarter | Sales |
|------|---------|-------|
| 2008 | null | 27 |
| 2009 | null | 48 |
| null | null | 75 |
CUBE(Year, Quarter)
ऊपर की रो + निम्नलिखित
| Year | Quarter | Sales |
|------|---------|-------|
| null | Q1 | 33 |
| null | Q2 | 42 |
PostgreSQL Summary Stats और Window Functions