Sobes.tech
Middle

Είναι απαραίτητο να γράψετε ένα ερώτημα που να επιστρέφει το συνολικό εισόδημα ανά κατηγορία: |prod_cat |total_amt | |Κατηγορία 1|80 | |Κατηγορία 2|84 | |Κατηγορία 3|270 | Υπάρχει ένας πίνακας συνδρομητών με εγγραφές που έφτασαν σε διαφορετικές στιγμές. Η ημερομηνία φόρτωσης της εγγραφής ορίζεται στο πεδίο raw_dt: select * from abnt |id |msisdn |tarif_plan_id|account_id|raw_dt | |1 |[phone]|4375 |4979 |[phone]| |1 |[phone]|5842 |4979 |[phone]| |2 |[phone]|5842 |589783|[phone]| |2 |[phone]|4563 |5326 |[phone]| |2 |[phone]|4563 |0832 |[phone]| |3 |[phone]|4563 |0832 |[phone]| |3 |[phone]|5495 |7485 |[phone]| |3 |[phone]|4563 |0832 |[phone]| |3 |[phone]|4563 |0832 |[phone]| Απαιτείται να γράψετε ένα ερώτημα που να επιστρέφει την προτελευταία φορτωμένη εγγραφή ανά κλειδί id: |id |msisdn |tarif_plan_id|account_id|raw_dt | |1 |[phone]|5842 |4979 |[phone]| |2 |[phone]|4563 |0832 |[phone]| |3 |[phone]|4563 |0832 |[phone]| Υπάρχει ένας πίνακας με ιστορικό αλλαγών των συνδρομητών. Κάθε εγγραφή είναι έγκυρη από valid_from_dt έως valid_to_dt. Αν μια εγγραφή κλείσει, η επόμενη ξεκινά την ίδια ημέρα. Για κάθε συνδρομητή, πρέπει να υπάρχει μόνο μία ενεργή εγγραφή εντός του διαστήματος [valid_from_dt, valid_to_dt]. select * from abnt |id |valid_from_dt|valid_to_dt|msisdn |tarif_plan_id|account_id| |1 |[phone] |[phone] |[phone]|4375 |4979 | |2 |[phone] |[phone] |[phone]|5842 |589783| |2 |[phone] |[phone] |[phone]|4563 |5326 | |3 |[phone] |[phone] |[phone]|4563 |0832 | Απαιτείται να γράψετε ένα ερώτημα που να επιστρέφει τις εγγραφές με λανθασμένη ημερομηνία κλεισίματος: |id |valid_from_dt|valid_to_dt|msisdn |tarif_plan_id|account_id| |2 |[phone] |[phone] |[phone]|5842 |4979 | |2 |[phone] |[phone] |[phone]|4563 |5326 | με ranked as ( select msisdn, tarif_plan_id, account_id, raw_dt, row_number() over (partition by id order by raw_dt desc) as rn ) select id, msisdn, tarif_plan_id, account_id, raw_dt from ranked where rn = 2 order by id