sqlschool.gr logo

articles

Articles of SQLschool.gr Team

ISO_WEEK

Fivi Panopoulou - Sotiris Karras
Monday 09 May 2016

Σε αυτό το post θα ασχοληθούμε με την αρίθμηση των ημερολογιακών εβδομάδων με βάση τo ISO 8601.

Έστω ότι θέλουμε να δούμε σε βάθος ενός χρόνου στατιστικά που βασίζονται σε εβδομαδιαία διαστήματα. Για παράδειγμα, ας πάρουμε τον εβδομαδιαίο τζίρο παραγγελιών από την AdventureWorks για το 2013 ώστε να δούμε ποιες βδομάδες είχαν περισσότερο ή λιγότερο τζίρο. Για το παράδειγμά μας θα θεωρήσουμε ότι η πρώτη μέρα της βδομάδας είναι η Δευτέρα και θα προσπαθήσουμε να χωρίσουμε το έτος σε βδομάδες. Kοιτάζοντας το ημερολόγιο μας βλέπουμε ότι η 01/01/2013 ήταν ημέρα Τρίτη. Αυτό σημαίνει ότι η πρώτη βδομάδα δεν είναι ουσιαστικά ολόκληρη βδομάδα αν ξεκινήσουμε από 1/1/2013 και επομένως συγκρίνοντας το τζίρο αυτής με άλλες βδομάδες, "αδικούμε" κατά κάποιο τρόπο τη βδομάδα αυτή. Το ίδιο πρόβλημα έχουμε και με την τελευταία εβδομάδα του 2013 που ουσιαστικά περιλαμβάνει 2 μέρες μόνο. Επιπλέον αν τα αποτελέσματα αυτά τα χρησιμοποιήσει στην συνέχεια κάποιος για να βγάλει για παράδειγμα μέσο όρο ανά βδομάδα, οι 2 ακριανές εβδομάδες θα αλλοιώνουν το σωστό αποτέλεσμα.

Για να λυθούν προβλήματα σαν το παραπάνω η DATEPART μπορεί να δεχτεί ως όρισμα εκτός από το week (ή wk ή ww) που μας επιστρέφει τον αριθμό της εβδομάδας στην οποία βρισκόμαστε με την λογική που παρουσιάζεται παραπάνω, το ISO_WEEK (ή isowk ή isoww). Με την παράμετρο αυτή, η datepart μας επιστρέφει τον αριθμό της βδομάδας με βάση το ISO 8601. Η αρίθμηση αυτή ακολουθεί την εξής λογική: ορίζουμε ως πρώτη βδομάδα του χρόνου εκείνη στην οποία πέφτει η πρώτη Πέμπτη της χρονιάς. Η πρώτη μέρα που θα ανήκει στην βδομάδα αυτή εξαρτάται από την ημερά που έχουμε ορίσει να ξεκινάει η βδομάδα. Η αρίθμηση στις βδομάδες προχωράει μέχρι να φτάσουμε στην πρώτη της επόμενης χρονιάς και έτσι έχουμε 53 με 54 ολόκληρες εβδομάδες. Με τον τρόπο αυτό λοιπόν μπορούμε να έχουμε καλύτερα στατιστικά σε βάθος ενός χρόνου ανά βδομάδα, πρέπει όμως να προσέχουμε ότι το διάστημα θα είναι 31/12/2012 με 29/12/2013 και όχι 1/1/2013 με 31/12/2013. Παρακάτω βλέπουμε αντιστοιχία isoweek , με week για διάφορες ημερομηνίες

date     iso_week    week_num    week_day                       week_day_name
-------- ----------- ----------- ------------------------------ -------------
20121230 52          53          Sunday                         7
20121231 1           54          Monday                         1
20130101 1           1           Tuesday                        2
20130102 1           1           Wednesday                      3
20130103 1           1           Thursday                       4
20130104 1           1           Friday                         5
20130105 1           1           Saturday                       6
20130106 1           1           Sunday                         7
20130107 2           2           Monday                         1
20130108 2           2           Tuesday                        2
20131229 52          52          Sunday                         7
20131230 1           53          Monday                         1
20131231 1           53          Tuesday                        2

Fivi Panopoulou

Fivi Panopoulou

Το 2007 ξεκίνησα τις σπουδές μου στη σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών στο Εθνικό Μετσόβιο Πολυτεχνείο.Κατά την διάρκεια των σπουδών μου εκεί αγάπησα τον προγραμματισμό και τα συστήματα πληροφορικής, καθώς επίσης απέκτησα το ιδιαίτερο ενδιαφέρον μου για τις βάσεις δεδομένων. Κατά την διάρκεια της διπλωματικής μου ασχολήθηκα με ζητήματα ανωνυμοποίησης δεδομένων και την ανάπτυξη σχετικού εργαλείου. Τα τελευταία χρόνια των σπουδών μου, μου δόθηκε η ευκαιρία να ασχοληθώ περισσότερο και να διευρύνω τους ορίζοντές μου ως Microsoft Student Partner και μέσω της κοινότητας Student Guru. Στα πλαίσια των κοινοτήτων αυτών, ξεκίνησα να ασχολούμαι με παρουσιάσεις αλλά και να γνωρίζω τον SQL Server. Από την πρώτη στιγμή που ασχολήθηκα μαζί του, συνειδητοποίησα πόσο ήθελα να εμβαθύνω τις γνώσεις μου σχετικά με αυτόν και τα συστήματα διαχείρισης βάσεων δεδομένων γενικότερα, πράγμα που προσπαθώ να κάνω έκτοτε. Πριν χρόνια είχα την τύχη να συμμετέχω στο πρόγραμμα mentoring, μέσω του οποίου γνώρισα τον κ. Χατζηπαυλή. Από τότε συμμετέχω στην ομάδα του SQLschool.gr.


Sotiris Karras

Sotiris Karras

Είμαι απόφοιτος της σχολής Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών του Εθνικού Μετσόβιου Πολυτεχνείου και στα ενδιαφέροντά μου συμπεριλαμβάνεται o τομέας του Knowledge and Data Engineering. Πιο συγκεκριμένα, έχω ασχοληθεί ακαδημαϊκά και ερευνητικά με τον τομέα του data privacy και data anonymity, ενώ πάθος μου είναι ό,τι έχει να κάνει με relational databases και data management. Στο παρελθόν, έχω συνεργαστεί με την Microsoft Hellas ως Microsoft Student Partner για ακαδημαϊκές δραστηριότητες και ήμουν μέρος του MVP mentoring προγράμματός της, στο οποίο είχα την τύχη να γνωρίσω τον κ. Χατζηπαυλή.

Episode

First look: SQL Database in Microsoft Fabric

image

More Episodes...

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.