| 100 | '''Топ клиенти''' \\ |
| 101 | Креираме прашалник каде велиме "да се пресмета колку трошел секој клиент вкупно,\\ |
| 102 | и да се сортира според таа сума,на крај да ги врати ги првите 5" : \\ |
| 103 | \\ |
| 104 | {{{#!sql |
| 105 | SELECT |
| 106 | c.first_name || ' ' || c.last_name AS label, |
| 107 | SUM(o.total_price) AS total_spent |
| 108 | FROM orders o |
| 109 | JOIN customers c ON o.id_customer = c.id_customer |
| 110 | GROUP BY c.first_name, c.last_name |
| 111 | ORDER BY total_spent DESC |
| 112 | LIMIT 5; |
| 113 | \\ |
| 114 | Функцијата {{{top_clients}}} претставена со релациска алгебра, каде што имаме: \\ |
| 115 | ⨝ врска : {{{JOIN}}} меѓу {{{orders}}} и {{{customers}}} \\ |
| 116 | γ врска : групирање по {{{first_name}}} и {{{last_name}}} и собирање на {{{SUM(total_price)}}} \\ |
| 117 | ρ врска : преименување на комбинацијата {{{first_name || ' ' || last_name}}} во {{{label}}} \\ |
| 118 | π врска : проекција на колоните {{{label}}} и {{{total_spent}}} \\ |
| 119 | τ_desc(...) врска : сортирање по {{{total_spent}}} во опаѓачки редослед \\ |
| 120 | LIMIT 5 : се применува како пост-процес за враќање на првите 5 записи \\ |
| 121 | \\ |
| 122 | {{{#!sql |
| 123 | π_label, total_spent ( |
| 124 | τ_desc(total_spent) ( |
| 125 | ρ(label ← concat(c.first_name, ' ', c.last_name)) ( |
| 126 | γ_c.first_name, c.last_name; SUM(o.total_price) → total_spent ( |
| 127 | Orders ⨝ Customers |
| 128 | ) |
| 129 | ) |
| 130 | ) |
| 131 | ) |
| 132 | }}} |
| 133 | \\ |
| 134 | \\ |
| 135 | '''Нови регистрации по месец''' \\ |
| 136 | Креираме прашалник каде велиме "за секој месец, прикажи колку нови корисници се регистрирале" : \\ |
| 137 | \\ |
| 138 | {{{#!sql |
| 139 | SELECT |
| 140 | TO_CHAR(created_at, 'Mon YYYY') AS label, |
| 141 | COUNT(*) AS new_users |
| 142 | FROM customers |
| 143 | GROUP BY label |
| 144 | ORDER BY MIN(created_at); |
| 145 | \\ |
| 146 | Функцијата {{{new_users}}} претставена со релациска алгебра, каде што имаме: \\ |
| 147 | γ врска : групирање по {{{TO_CHAR(created_at, 'Mon YYYY')}}} \\ |
| 148 | ρ врска : преименување на изразот {{{TO_CHAR(...)}}} во {{{label}}} \\ |
| 149 | π врска : проекција на колоните {{{label}}} и {{{new_users}}} \\ |
| 150 | τ(...) врска : сортирање според {{{MIN(created_at)}}} порастечки (од најстаро кон најново) \\ |
| 151 | \\ |
| 152 | {{{#!sql |
| 153 | γ_MonthYear(created_at); COUNT(*) → new_users (Customers) |
| 154 | или |
| 155 | π_label, new_users ( |
| 156 | ρ(label ← TO_CHAR(created_at, 'Mon YYYY')) ( |
| 157 | γ_label; COUNT(*) → new_users (Customers) |
| 158 | ) |
| 159 | ) |
| 160 | |
| 161 | }}} |
| 162 | \\ |
| 163 | \\ |