| 46 | | PlayCounts = γ_{g.genre_id, g.name → genre_name, ar.name → artist_name, COUNT(*) → play_count} (σ_{c.customer_id = 123}((customer ⋈ invoice) ⋈ (invoice_line ⋈ track) ⋈ (track ⋈ genre) ⋈ (track ⋈ album) ⋈ (album ⋈ artist))) |
| | 46 | !PlayCounts = γ_{g.genre_id, g.name → genre_name, ar.name → artist_name, COUNT(*) → play_count} (σ_{c.customer_id = 123}((customer ⋈ invoice) ⋈ (invoice_line ⋈ track) ⋈ (track ⋈ genre) ⋈ (track ⋈ album) ⋈ (album ⋈ artist))) |
| | 47 | |
| | 48 | |
| | 49 | == 2. MaxPlayCounts == |
| | 50 | Се пресметува максималниот број на плеј-стани за секој жанр. Операциите што се користат се: |
| | 51 | |
| | 52 | - **Grouping (γ)**: Групирање по `genre_id` и пресметување на максималниот број на плеј-стани за секој жанр користејќи ја функцијата `MAX`. |
| | 53 | |
| | 54 | Релационата алгебра за `MaxPlayCounts`: |
| | 55 | |
| | 56 | !MaxPlayCounts = γ_{genre_id, MAX(play_count) → max_count} (!PlayCounts) |
| | 57 | |
| | 58 | |
| | 59 | == 3. Final_Result == |
| | 60 | Се прави **Join** помеѓу `PlayCounts` и `MaxPlayCounts`, за да се изберат само оние редови каде што бројот на плеј-стани се совпаѓа со максималниот број за даден жанр. Се избираат само атрибутите `genre_name`, `artist_name`, и `play_count`. |
| | 61 | |
| | 62 | Релационата алгебра за финалниот резултат: |
| | 63 | |
| | 64 | Final_Result = π_{pc.genre_name, pc.artist_name, pc.play_count} |
| | 65 | (PlayCounts ⋈_{pc.genre_id = mpc.genre_id ∧ pc.play_count = mpc.max_count} MaxPlayCounts) |
| | 66 | |
| | 67 | |
| | 68 | == Целосен израз на релационата алгебра == |
| | 69 | Со комбинирање на сите чекори, добиваме целосен израз за релационата алгебра: |
| | 70 | |
| | 71 | π_{pc.genre_name, pc.artist_name, pc.play_count} ((γ_{g.genre_id, g.name → genre_name, ar.name → artist_name, COUNT(*) → play_count}(σ_{c.customer_id = 123} ((customer ⋈ invoice) ⋈ (invoice_line ⋈ track) ⋈ (track ⋈ genre) ⋈ (track ⋈ album) ⋈ (album ⋈ artist)))) ⋈{pc.genre_id = mpc.genre_id ∧ pc.play_count = mpc.max_count} (γ{genre_id, MAX(play_count) → max_count} (PlayCounts))) |