Μετάβαση στο περιεχόμενο

Βάσεις Δεδομένων — 2018 (Θέμα 3)

Η εκφώνηση (Θέμα 3 της εξέτασης του 2018) προέρχεται από φωτογραφία λυμένου θέματος.

Screenshot_2024-06-26-12-26-34-264_cn.wps.moffice_eng-edit.jpg

ΘΕΜΑ \(3^\circ\) [5 μον.] Έστω οι παρακάτω Πίνακες:

SERVICE | CODE | COST | | :--- | :--- | | C1 | 10 | | ... | ... |

CA, CP, CTH | NAME | AGE | ADDR | | :--- | :--- | :--- | | N1 | 22 | A1 | | ... | ... | ... |

SUBSCRIBE | CODE | NAME | SDATE | | :--- | :--- | :--- | | C1 | N1 | 1/1/04 | | ... | ... | ... |

  1. Ορίστε την SQL έκφραση για: α) «τα ονόματα των κοινών πελατών Αθήνας & Πάτρας που δεν μένουν στις περιοχές A1 ή A2 και έχουν ηλικία εκτός του διαστήματος 20 και 30» [0.5], β) «τους κωδικούς και το κόστος των υπηρεσιών στις οποίες έγιναν συνδρομητές πελάτες Θες/κης με ηλικία μεγαλύτερη των 50 μετά την 1/1/11» [0.5], γ) τον αριθμό των πελατών της Πάτρας ανά ηλικία και για τις ηλικίες από 20 έως και 25 [1 μον.], δ) την ελάχιστη και μέγιστη ηλικία των πελατών Αθήνας που είναι συνδρομητές στην υπηρεσία C1 [0.5], ε) την αύξηση κατά 5[δυσανάγνωστο]του κόστους των υπηρεσιών C1, C2 και C3 [0.5].
  2. Ορίστε την έκφραση σχεσιακής άλγεβρας για να βρείτε: α) «τους αποκλειστικούς πελάτες Αθήνας οι οποίοι είναι συνδρομητές σε υπηρεσίες με κόστος μικρότερο των 70€ μέσα στο 2017» [1], β) «τον μέσο όρο ηλικίας όλων των πελατών που μένουν στις περιοχές A1 ή A2» [0.5], γ) τα ζεύγη πελατών Αθήνας με ηλικία μεγαλύτερη των 25 και πελατών Πάτρας που έγιναν συνδρομητές στην υπηρεσία C1 μετά την 1/6/16» [0.5].

Σημείωση: η φωτογραφία περιέχει χειρόγραφες απαντήσεις φοιτητή.

Λύσεις (🟡 community)

Κατάσταση: 🟡 community Πηγή: φωτογραφία λύσεων από το Discord (φοιτητική λύση)

Προσοχή

Στο ερώτημα 1β η συνθήκη σύνδεσης γίνεται στη στήλη SUBSCRIBE.COST, ενώ ο πίνακας SUBSCRIBE της εκφώνησης έχει μόνο τα γνωρίσματα CODE, NAME, SDATE. Επιπλέον η λίστα επιλογής «SERVICE.CODE SERVICE.COST» δεν έχει κόμμα ανάμεσα στα γνωρίσματα. Στο ερώτημα 1γ η ρήτρα GROUP BY γράφεται πριν από το WHERE· στη SQL το WHERE πρέπει να προηγείται του GROUP BY, άρα η έκφραση δεν είναι έγκυρη όπως είναι γραμμένη. Η λύση της σχεσιακής άλγεβρας (ερώτημα 2 α–γ) δεν υπάρχει στη φωτογραφία· η λύση είναι ελλιπής για το δεύτερο ερώτημα.

Λύσεις — Βάσεις Δεδομένων — 2018 (Θέμα 3, SQL)

Φοιτητική λύση του Θέματος 3 (SQL, 2018). Η λύση δεν έχει ελεγχθεί από τον διδάσκοντα. Η ίδια λύση SQL υπάρχει και στο παλιό αρχείο previous_exams.md, χωρίς διαφορά, γι' αυτό δεν μεταφέρθηκε ξεχωριστά.

Screenshot_2024-06-26-12-26-34-264_cn.wps.moffice_eng-edit.jpg

\(3^\circ\) Είδος Ασκήσεων | SQL Εκφράσεις

Θέμα 3, 2018:

ΘΕΜΑ \(3^\circ\) [5 μον.] Έστω οι παρακάτω Πίνακες:

SERVICE | CODE | COST | | :--- | :--- | | C1 | 10 | | ... | ... |

CA, CP, CTH | NAME | AGE | ADDR | | :--- | :--- | :--- | | N1 | 22 | A1 | | ... | ... | ... |

SUBSCRIBE | CODE | NAME | SDATE | | :--- | :--- | :--- | | C1 | N1 | 1/1/04 | | ... | ... | ... |

  1. Ορίστε την SQL έκφραση για: α) «τα ονόματα των κοινών πελατών Αθήνας & Πάτρας που δεν μένουν στις περιοχές A1 ή A2 και έχουν ηλικία εκτός του διαστήματος 20 και 30» [0.5], β) «τους κωδικούς και το κόστος των υπηρεσιών στις οποίες έγιναν συνδρομητές πελάτες Θες/κης με ηλικία μεγαλύτερη των 50 μετά την 1/1/11» [0.5], γ) τον αριθμό των πελατών της Πάτρας ανά ηλικία και για τις ηλικίες από 20 έως και 25 [1 μον.], δ) την ελάχιστη και μέγιστη ηλικία των πελατών Αθήνας που είναι συνδρομητές στην υπηρεσία C1 [0.5], ε) την αύξηση κατά 5του κόστους των υπηρεσιών C1, C2 και C3 [0.5].
  2. Ορίστε την έκφραση σχεσιακής άλγεβρας για να βρείτε: α) «τους αποκλειστικούς πελάτες Αθήνας οι οποίοι είναι συνδρομητές σε υπηρεσίες με κόστος μικρότερο των 70€ μέσα στο 2017» [1], β) «τον μέσο όρο ηλικίας όλων των πελατών που μένουν στις περιοχές A1 ή A2» [0.5], γ) τα ζεύγη πελατών Αθήνας με ηλικία μεγαλύτερη των 25 και πελατών Πάτρας που έγιναν συνδρομητές στην υπηρεσία C1 μετά την 1/6/16» [0.5].

CA = Customer Athens , CP = Customer Patras, CTH = Customer Thessaloniki

a)

select subscribe.NAME from subscribe
inner join CA on subscribe.NAME = CA.NAME
inner join CP on subscribe.NAME = CP.NAME
where CA.ADDR <> "A1" and CA.ADDR <> "A2" and CA.AGE between 20 and 30;

b)

select SERVICE.CODE SERVICE.COST from SERVICE
inner join SUBSCRIBE on SUBSCRIBE.COST = SERVICE.COST
inner join CTH on SUBSCRIBE.NAME = CTH.NAME
where CTH.AGE > 50 and SUBSCRIBE.SDATE >= '2011-1-1';

c)

select count(CA.NAME) from CA group by CA.AGE
where CA.AGE between 20 and 25;

d)

select min(CA.AGE) as minimum_age, max(CA.AGE) as maximum_age from CA
inner join SUBSCRIBE on CA.NAME = SUBSCRIBE.NAME
inner join SERVICE on SUBSCRIBE.CODE = SERVICE.CODE
where SUBSCRIBE.CODE = 'C1';

e) ```sql update SERVICE set COST = COST + 5 where CODE = 'C1' or CODE = 'C2' or CODE = 'C3';

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


✖ Βρήκα λάθος στη μεταγραφή