Extras din laborator
Agregarea datelor. Operatorul CUBE
Agregarea simultană a datelor după mai mulţi parametrii (dimensiuni) însoţită de determinarea subtotalurilor aferente face obiectul aşa-numitei analize multidimensionale. Aceasta se bazează pe utilizarea funcţiilor analitice dedicate procesării analitice on-line (On Line Analytical Processing – OLAP) şi care au fost introduse în Oracle începând cu versiunea 8i a acestuia.
Exemplu : Se să genereze, prin interogarea corespunzătoare a tabelei oferte_proprietati, un raport de forma următoare: acesta va conţine
valoarea medie a preţului cerut (indicatorul analizat) calculată la nivelul fiecărei combinaţii zona –
tip_proprietate, precum şi la
nivelul fiecărei zone (indiferent de tipul de proprietate) în parte, la nivelul fiecărui tip de proprietate (indiferent de zona de care aparţine) în parte, precum şi la nivel global.
Într-o variantă clasică se propune o formulare bazată pe operatorul asamblist UNION, ce apoi este exprimată succint cu ajutorul funcţiei CUBE.
Obs. Structura tabelei oferte_proprietati este: codinreg, tippropr, zona, str, nr, bl, sc, ap, et, pcerut, pmin, moneda, telfix, telmob, obs.
SELECT zona, tippropr AS Tip_Proprietate, AVG(pcerut) AS Pret_Mediu_Cerut
FROM oferte_proprietati
GROUP BY zona, tippropr
UNION
SELECT zona, '', AVG(pcerut)
FROM oferte_proprietati
GROUP BY zona
UNION
SELECT '', tippropr, AVG(pcerut)
FROM oferte_proprietati
GROUP BY tippropr
UNION
SELECT '', '', AVG(pcerut)
FROM oferte_proprietati
ORDER BY 1,2;
Operatorul ROLLUP
SELECT zona, tippropr AS Tip_Proprietate, AVG(pcerut) AS Pret_Mediu_Cerut
FROM lista_proprietati
GROUP BY ROLLUP (zona, tippropr);
Operatorul CUBE
SELECT zona, tippropr AS Tip_Proprietate, AVG(pcerut) AS Pret_Mediu_Cerut
FROM lista_proprietati
GROUP BY CUBE (zona, tippropr);
O analiză care se respectă este, totuşi, una multi-dimensională. Dacă singura axă de (subtotalizare) a fost, în exemplele de până acum, cea geografică, în continuare ne interesează să vizualizăm vânzările pe două axe, produse (ISBN-ul cărţii – codul unic acordat fiecărei cărţi, nu fiecărui exemplar în parte) şi clienţi.
a. Ştergerea tabelului vinzari_carti
DROP TABLE vinzari_carti;
b. Crearea tabelului vinzari_carti
CREATE TABLE vinzari_carti (
NrFact DECIMAL(6) NOT NULL,
DataFact DATE NOT NULL,
Client VARCHAR(15),
Loc VARCHAR(15),
Jud CHAR(2),
ISBN CHAR(14),
Cantit DECIMAL (6),
PretUn DECIMAL (8),
ValTotala DECIMAL (14) );
c. Introducerea datelor în tabel a vinzări_carti
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Pop Ion', 'Timisoara', 'TM', '927-345-547-x', 3, 45);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Pop Ion', 'Timisoara', 'TM', '978-534-523-x', 5, 55);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Pop Ion', 'Timisoara', 'TM', '978-534-523-x', 1, 78);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Popescu Maria', 'Lugoj', 'TM', '978-534-523-x', 3, 33);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Popescu Maria', 'Lugoj', 'TM', '927-345-547-x', 3, 45);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Popescu Maria', 'Lugoj', 'TM', '978-534-523-x', 5, 55);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Ana Mara', 'Jimbolia', 'TM', '927-345-547-x', 13, 45);
INSERT INTO vinzari_carti (nrfact, datafact, client, loc, jud, isbn, cantit, pretun) values
(123456,date'2008-03-03', 'Tara Edgar', 'Jimbolia', 'TM', '927-345-547-x', 11, 15);
Preview document
Conținut arhivă zip
- Baza de Date - Cube
- Baza de Date - Cube.docx
- Clasamente.docx
- Cube partial.doc
- Depozitul de date.docx
- Introducere.docx