| 208 | = Релациона алгебра за прашалникот: Најпопуларен артист по жанр за корисник = |
| 209 | |
| 210 | |
| 211 | == 1. !PlayCounts == |
| 212 | Се пресметува бројот на плеј-стани за секој жанр и уметник за одреден клиент (со ID 123). Операциите што се користат се: |
| 213 | |
| 214 | - **Join**: Поврзување на сите потребни табли (customer, invoice, invoice_line, track, genre, album, artist) со операцијата `⋈`. |
| 215 | - **Selection (σ)**: Применуваме услов за селектирање само на податоци за клиент со ID 123. |
| 216 | - **Grouping (γ)**: Групираме по жанр и уметник и пресметуваме бројот на плеј-стани за секој пар жанр-уметник со функцијата COUNT. |
| 217 | |
| 218 | Релационата алгебра за `PlayCounts`: |
| 219 | |
| 220 | !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))) |
| 221 | |
| 222 | |
| 223 | == 2. !MaxPlayCounts == |
| 224 | Се пресметува максималниот број на плеј-стани за секој жанр. Операциите што се користат се: |
| 225 | |
| 226 | - **Grouping (γ)**: Групирање по `genre_id` и пресметување на максималниот број на плеј-стани за секој жанр користејќи ја функцијата `MAX`. |
| 227 | |
| 228 | Релационата алгебра за `MaxPlayCounts`: |
| 229 | |
| 230 | !MaxPlayCounts = γ_{genre_id, MAX(play_count) → max_count} (!PlayCounts) |
| 231 | |
| 232 | |
| 233 | == 3. !FinalResult == |
| 234 | Се прави **Join** помеѓу `PlayCounts` и `MaxPlayCounts`, за да се изберат само оние редови каде што бројот на плеј-стани се совпаѓа со максималниот број за даден жанр. Се избираат само атрибутите `genre_name`, `artist_name`, и `play_count`. |
| 235 | |
| 236 | Релационата алгебра за финалниот резултат: |
| 237 | |
| 238 | !FinalResult = π_{pc.genre_name, pc.artist_name, pc.play_count} |
| 239 | (!PlayCounts ⋈_{pc.genre_id = mpc.genre_id ∧ pc.play_count = mpc.max_count} !MaxPlayCounts) |
| 240 | |
| 241 | |
| 242 | == Целосен израз на релационата алгебра == |
| 243 | Со комбинирање на сите чекори, добиваме целосен израз за релационата алгебра: |
| 244 | |
| 245 | π_{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))) |
| 246 | |
| 247 | |