Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pp:2025:scala:secret_tema2 [2025/04/09 20:54] razvang |
pp:2025:scala:secret_tema2 [2025/04/10 12:09] (current) tpruteanu |
||
---|---|---|---|
Line 105: | Line 105: | ||
**1.5** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. Functia are un parametru optional ce determina ordinea in care trebuiesc sortate. Mai mult despre parametrii optionali puteti gasi [[https://docs.scala-lang.org/tour/default-parameter-values.html | aici]]. | **1.5** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. Functia are un parametru optional ce determina ordinea in care trebuiesc sortate. Mai mult despre parametrii optionali puteti gasi [[https://docs.scala-lang.org/tour/default-parameter-values.html | aici]]. | ||
<code scala> | <code scala> | ||
- | def sort(column: String, criterion: String = "Asc"): Table = ??? | + | def sort(column: String, ascending: Boolean = true): Table = ??? |
</code> | </code> | ||
Line 120: | Line 120: | ||
**1.8** Definiti functia join, care primeste un alt tabel si o coloana specifica pentru fiecare tabel. Aceasta functie va combina tabelele folosind coloanele indicate, rezultand intr-un nou tabel. | **1.8** Definiti functia join, care primeste un alt tabel si o coloana specifica pentru fiecare tabel. Aceasta functie va combina tabelele folosind coloanele indicate, rezultand intr-un nou tabel. | ||
* Cand valorile din coloanele folosite pentru combinatie sunt identice, se va retine o singura valoare din acele coloane. | * Cand valorile din coloanele folosite pentru combinatie sunt identice, se va retine o singura valoare din acele coloane. | ||
- | * Daca valorile difera, ele vor fi unite intr-un singur camp, separandu-le prin semnul ";", urmand ordinea in care tabelele sunt enumerate in apelul functiei. | + | * Daca valorile difera, ele vor fi unite intr-un singur camp, separandu-le prin semnul ";". |
* Se considera ca valorile de tip sir de caractere gol ("") sunt echivalente cu NULL, adica acestea nu vor fi incluse daca exista o valoare specifica intr-o alta tabela. | * Se considera ca valorile de tip sir de caractere gol ("") sunt echivalente cu NULL, adica acestea nu vor fi incluse daca exista o valoare specifica intr-o alta tabela. | ||
* In situatiile in care o linie este prezenta in tabelul A dar nu are corespondent in tabelul B, se vor completa campurile corespunzatoare din tabelul B cu sirul vid "". | * In situatiile in care o linie este prezenta in tabelul A dar nu are corespondent in tabelul B, se vor completa campurile corespunzatoare din tabelul B cu sirul vid "". | ||
Line 153: | Line 153: | ||
<code scala> | <code scala> | ||
- | def join(table2: String, c1: String, c2: String): Option[Table] = ??? | + | def join(other: Table)(col1: String, col2: String): Table = ??? |
</code> | </code> | ||
Line 218: | Line 218: | ||
**2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori in cadrul traitului `FilterCond` care sa ne permita sa scriem cod mai concis. | **2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori in cadrul traitului `FilterCond` care sa ne permita sa scriem cod mai concis. | ||
Vom folosi urmatorii operatori ce extind clasa FilterCond: | Vom folosi urmatorii operatori ce extind clasa FilterCond: | ||
- | - === - pentru a verifica egalitatea a doua conditii de filtrare. | + | - == - pentru a verifica egalitatea a doua conditii de filtrare. |
- && - pentru a face conjunctia a doua conditii de filtrare. | - && - pentru a face conjunctia a doua conditii de filtrare. | ||
- || - pentru a face disjunctia a doua conditii de filtrare. | - || - pentru a face disjunctia a doua conditii de filtrare. | ||
Line 277: | Line 277: | ||
Daca unul dintre numele de tabele nu exista in baza de date, functia va intoarce None. | Daca unul dintre numele de tabele nu exista in baza de date, functia va intoarce None. | ||
<code scala> | <code scala> | ||
- | def selectTables(tableNames: List[String]): Option[Database] = ??? | + | def selectTables(tableNames: List[String]): Database = ??? |
</code> | </code> | ||
Line 369: | Line 369: | ||
| Filter | operator == | 1.5 | | | Filter | operator == | 1.5 | | ||
| Filter | operator && | 1.5 | | | Filter | operator && | 1.5 | | ||
- | | Filter | operator \\|\\| | 1.5 | | + | | Filter | operator `|`| | 1.5 | |
| Filter | operator ! | 1.5 | | | Filter | operator ! | 1.5 | | ||
| **FILTER** | **TOTAL** | **30** | | | **FILTER** | **TOTAL** | **30** | | ||
Line 378: | Line 378: | ||
| Database | indexing | 3 | | | Database | indexing | 3 | | ||
| **DATABASE** | **TOTAL** | **15** | | | **DATABASE** | **TOTAL** | **15** | | ||
- | | Query | query1 | 3.33 | | + | | Query | query1 | 3 | |
- | | Query | query2 | 3.33 | | + | | Query | query2 | 3 | |
- | | Query | query3 | 3.33 | | + | | Query | query3 | 4 | |
| **QUERY** | **TOTAL** | **10** | | | **QUERY** | **TOTAL** | **10** | | ||
| ''TEMA 2'' | ''TOTAL'' | ''100'' | | | ''TEMA 2'' | ''TOTAL'' | ''100'' | | ||