Shiran.Tips

With Rollup

June 27, 2019 | 1 Minute Read

SQL#

והפעם- בואו נדבר על אגרגציה על אגרגציה / אגרגצית ביניים

הבעיה שלנו היא ש…

לעיתים אנו מעוניינים לראות אגרגציה סופית בנוסף לארגציה קיימת. כלומר כאשר אנו משתמשים בפונקציית אגרגציה כלשהי כמו לדוגמה sum(), נרצה שתוצג גם אגרגציה סופית של כל השורות, כלומר סכימה סופית של עמודת ה-sum.

הטיפ שלי

להשתמש בפקודה with rollup אותה כותבים לאחר פקודת ה-group by, כך תופיע שורה נוספת (בהתאם לעמודה עליה נעשה group by), שתציג אגרגציה כוללת של כל השורות שמעליה.

בואו ננסה את זה בפועל

הטבלה שלנו:

City Year Revenue
‘TEL AVIV’ 2015 100000
‘TEL AVIV’ 2016 150000
‘JERUSALEM’ 2017 76500
‘EILAT’ 2015 20000
‘EILAT’ 2016 10500
‘EILAT’ 2017 5000

אפשרות אחת – אגרגציה על אגרגציה

הפקודות שנבצע:

תוצאה:

city sum(revenues)
‘EILAT’ ‘35500’
’ JERUSALEM’’ ‘76500’
‘TEL AVIV ‘ ‘250000’
NULL ‘362000’

סך הכל הרווחנו בכל הערים ובכל השנים 362,000 ש״ח.

אפשרות שניה – אגרגצית ביניים

הפקודות שנבצע:

תוצאה:

city year sum(revenues)
‘EILAT’ ‘2015’ ‘20000’
‘EILAT’ ‘2016’ ‘10500’
‘EILAT’ ‘2017’ ‘5000’
‘EILAT’ NULL ‘35500’
‘JERUSALEM’ ‘2017’ ‘76500’
‘JERUSALEM’ NULL ‘76500’
‘TEL AVIV’ ‘2015’ ‘100000’
‘TEL AVIV’ ‘2016’ ‘150000’
‘TEL AVIV’ NULL ‘250000’
NULL NULL ‘362000’

ניתן לראות סיכום עבור כל עיר בנפרד. כך שסך הכל הרווחנו בכל השנים באילת 35,500 ש״ח, בירושלים 76,500 ש״ח, בתל אביב 250,000. וסיכום עבור כל הערים יחד, סך הכל עבור כל הערים בכל השנים הרווחנו 362,000 ש״ח.

רוצה להשאר מעודכנ/ת?

* שדה חובה