Skip to content

Commit

Permalink
Merge pull request #39 from DPIRPSG/Revision
Browse files Browse the repository at this point in the history
Primera revisión
  • Loading branch information
ManuelLR committed Nov 2, 2015
2 parents a3c65f3 + 3b8cdff commit 6c225a7
Show file tree
Hide file tree
Showing 6 changed files with 241 additions and 243 deletions.
Binary file added CasosDePrueba.docx
Binary file not shown.
241 changes: 241 additions & 0 deletions Queries.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
Query C/1
Especificaci�n: The consumer/s who has/have placed more orders.
JPQL Query: select c from Consumer c join c.orders o group by c having count(c.orders.size) = (select max(c.orders.size) from Consumer c);
Descripci�n textual: En esta consulta hacemos un join de los consumers con sus orders y los agrupamos por los propios consumers. Luego realizamos un filtro en el que comprobamos que el n�mero de orders del consumer que estamos analizando sea igual al n�mero de orders del consumer que m�s orders ha realizado.
Resultado:
Object #0 = domain.Consumer{
id=13
version=1
name="Ruben"
surname="Sanchez"
email="[email protected]"
phone="612342289"
folders=[domain.Folder@20, domain.Folder@21, domain.Folder@22]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@5
shoppingCart=domain.ShoppingCart@e
orders=[domain.Order@4e, domain.Order@50, domain.Order@53]
}
Object #1 = domain.Consumer{
id=15
version=1
name="Guillermo"
surname="Alcala"
email="[email protected]"
phone="633422897"
folders=[domain.Folder@23, domain.Folder@24, domain.Folder@25]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@6
shoppingCart=domain.ShoppingCart@10
orders=[domain.Order@4f, domain.Order@51, domain.Order@52]
}

Query C/2
Especificaci�n: The consumer/s who has/have spent more money on their orders.
JPQL Query: select c from Consumer c join c.orders o where o.cancelMoment is null group by c having max(o.amount) = (select max(o.amount) from Order o);
Descripci�n textual: En esta consulta hacemos un join de los consumers con sus orders que no tengan fecha de cancelaci�n y los agrupamos por los propios consumers. Luego realizamos un filtro para quedarnos con el consumer que tenga el order con la cantidad igual a la del order con mayor cantidad.
Resultado:
Object #0 = domain.Consumer{
id=13
version=1
name="Ruben"
surname="Sanchez"
email="[email protected]"
phone="612342289"
folders=[domain.Folder@20, domain.Folder@21, domain.Folder@22]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@5
shoppingCart=domain.ShoppingCart@e
orders=[domain.Order@4e, domain.Order@50, domain.Order@53]
}

Query C/3
Especificaci�n: The best-selling item/s in the inventory.
JPQL Query: select i from Item i where i.deleted is false and i.sku IN (select oi.sku from OrderItem oi join oi.order o where o.deliveryMoment is not null group by oi.sku having max(oi.units) = (select max(oi.units) from OrderItem oi));
Descripci�n textual: En esta consulta discriminamos los items que hayan sido borrados y cuyo sku sea igual al resultado de una consulta secundaria. Esta consulta realiza un join entre los OrderItems y sus orders que tengas una fecha de entrega, agrup�ndolos por el sku. Luego realizamos un filtro para quedarnos con el OrderItem que tenga su n�mero de unidades igual al del OrderItem con m�s unidades.
Resultado:
Object #0 = domain.Item{
id=52
version=0
sku="AB-H6GH"
name="Turr�n de chocolate"
description="se acerca la navidad, compra el mejor turron de chocolate"
price=1.99
tags=[Dulce, Turron, Chocolate]
picture=<null>
deleted=<<false>>
category=domain.Category@31
comments=[domain.Comment@39]
storages=[domain.Storage@43]
}

Query C/4
Especificaci�n: The worst-selling item/s in the inventory.
JPQL Query: select i from Item i where i.deleted is false and i.sku IN (select oi.sku from OrderItem oi join oi.order o where o.deliveryMoment is not null group by oi.sku having min(oi.units) = (select min(oi.units) from OrderItem oi));
Descripci�n textual: En esta consulta discriminamos los items que hayan sido borrados y cuyo sku sea igual al resultado de una consulta secundaria. Esta consulta realiza un join entre los OrderItems y sus orders que tengas una fecha de entrega, agrup�ndolos por el sku. Luego realizamos un filtro para quedarnos con el OrderItem que tenga su n�mero de unidades igual al del OrderItem con menos unidades.

Resultado:
Object #0 = domain.Item{
id=53
version=0
sku="CJ-C8JW"
name="Televisor"
description="El mejor televisor para las mejores series"
price=699.99
tags=[TV, Full-HD, Smart-TV]
picture=<null>
deleted=<<false>>
category=domain.Category@32
comments=[domain.Comment@3a]
storages=[domain.Storage@44]
}
Object #1 = domain.Item{
id=55
version=0
sku="Vl-3H95"
name="Filete de cerdo"
description="Filete bueno y barato"
price=3.5
tags=[Filete, Cerdo, Carne]
picture=<null>
deleted=<<false>>
category=domain.Category@31
comments=[domain.Comment@3d, domain.Comment@3e]
storages=[domain.Storage@46]
}

Query B/1
Especificaci�n: The clerk/s who has/have served and delivered more orders.
JPQL Query: select c1 from Order o1 join o1.clerk c1 where o1.deliveryMoment is not null group by c1 having count(o1) >= all(select count(o2) from Clerk c2 join c2.orders o2 where o2.deliveryMoment is not null group by c2);
Descripci�n textual: En esta consulta hacemos un join entre los orders y los clerks que las administran discriminando los orders que no tengan una fecha de entrega, y agrupando por los propios clerks. Luego realizamos un filtro para tomar s�lo aquellos clerks cuyo n�mero de orders servidos, y que hayan sido entregados, sea mayor o igual al n�mero de orders servidos y entregados de cada clerk por separado, obteniendo el m�ximo de ellos y por lo tanto el/los clerk/s que cumplen ese m�ximo.
Resultado:
Object #0 = domain.Clerk{
id=20
version=0
name="Ana"
surname="pozo"
email="[email protected]"
phone="633946087"
folders=[domain.Folder@26, domain.Folder@27, domain.Folder@28]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@7
orders=[domain.Order@4e, domain.Order@50, domain.Order@52, domain.Order@55]
}

Query B/2
Especificaci�n: The clerk/s who has/have served and delivered less orders.
JPQL Query: select c1 from Order o1 join o1.clerk c1 where o1.deliveryMoment is not null group by c1 having count(o1) <= all(select count(o2) from Clerk c2 join c2.orders o2 where o2.deliveryMoment is not null group by c2);
Descripci�n textual: En esta consulta hacemos un join entre los orders y los clerks que las administran discriminando los orders que no tengan una fecha de entrega, y agrupando por los propios clerks. Luego realizamos un filtro para tomar s�lo aquellos clerks cuyo n�mero de orders servidos, y que hayan sido entregados, sea menor o igual al n�mero de orders servidos y entregados de cada clerk por separado, obteniendo el m�nimo de ellos y por lo tanto el/los clerk/s que cumplen ese m�nimo.

Resultado:
Object #0 = domain.Clerk{
id=19
version=0
name="Carlos"
surname="Mata"
email="[email protected]"
phone="633449087"
folders=[domain.Folder@1d, domain.Folder@1e, domain.Folder@1f]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@4
orders=[domain.Order@4d, domain.Order@51, domain.Order@54]
}
Object #1 = domain.Clerk{
id=21
version=0
name="Alberto"
surname="Rodriguez"
email="[email protected]"
phone="633940257"
folders=[domain.Folder@29, domain.Folder@2a, domain.Folder@2b]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@8
orders=[domain.Order@4f, domain.Order@53]
}

Query B/3
Especificaci�n: The consumer/s who has/have cancelled more orders.
JPQL Query: select c1 from Order o1 join o1.consumer c1 where o1.cancelMoment is not null group by c1 having count(o1) >= all(select count(o2) from Consumer c2 join c2.orders o2 where o2.cancelMoment is not null group by c2);
Descripci�n textual: En esta consulta hacemos un join entre los orders y los consumers que los realizan, discriminando los orders que no tengan una fecha de cancelaci�n, y agrupando por los propios consumers. Luego realizamos un filtro para tomar s�lo aquellos consumer cuyo n�mero de orders canceladas sea mayor o igual al n�mero de orders canceladas de cada consumer por separado, obteniendo el m�ximo de ellos y por lo tanto el/los consumer/s que cumplen ese m�ximo.
Resultado:
Object #0 = domain.Consumer{
id=15
version=1
name="Guillermo"
surname="Alcala"
email="[email protected]"
phone="633422897"
folders=[domain.Folder@23, domain.Folder@24, domain.Folder@25]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@6
shoppingCart=domain.ShoppingCart@10
orders=[domain.Order@4f, domain.Order@51, domain.Order@52]
}

Query B/4
Especificaci�n: Display a dashboard with the following information: The consumer/s who has/have cancelled less orders.
JPQL Query: select c1 from Order o1 join o1.consumer c1 where o1.cancelMoment is not null group by c1 having count(o1) <= all(select count(o2) from Consumer c2 join c2.orders o2 where o2.cancelMoment is not null group by c2);
Descripci�n textual: En esta consulta hacemos un join entre los orders y los consumers que los realizan, discriminando los orders que no tengan una fecha de cancelaci�n, y agrupando por los propios consumers. Luego realizamos un filtro para tomar s�lo aquellos consumer cuyo n�mero de orders canceladas sea menor o igual al n�mero de orders canceladas de cada consumer por separado, obteniendo el m�nimo de ellos y por lo tanto el/los consumer/s que cumplen ese m�nimo.
Resultado:
Object #0 = domain.Consumer{
id=13
version=1
name="Ruben"
surname="Sanchez"
email="[email protected]"
phone="612342289"
folders=[domain.Folder@20, domain.Folder@21, domain.Folder@22]
sent=[]
received=[domain.Message@16]
userAccount=security.UserAccount@5
shoppingCart=domain.ShoppingCart@e
orders=[domain.Order@4e, domain.Order@50, domain.Order@53]
}

Query B/5
Especificaci�n: Display a dashboard with the following information: The ratio of orders that have been cancelled during the current month.
JPQL Query: select (count(distinct o1)*1.0)/(count(distinct o2)*1.0) from Order o1, Order o2 where month(o1.cancelMoment) = month(CURRENT_DATE) and year(o1.cancelMoment) = year(CURRENT_DATE) and month(o2.placementMoment) = month(CURRENT_DATE) and year(o2.placementMoment) = year(CURRENT_DATE);
Descripci�n textual: En esta consulta obtenemos el resultado de la divisi�n entre los orders que se hayan cancelado este mes y los que se hayan creado/realizado en el mismo. Para ello, discriminamos los las orders que no hayan sido canceladas ni creadas/realizadas en el mes y a�o. Adem�s realizamos una multiplicaci�n por 1.0 para evitar que se trunque el resultado en caso de que �ste sea decimal.
Resultado:
Object #0 = java.lang.Double{0.66667}

Query A/1
Especificaci�n: Display a dashboard with the following information: The item/s that has/have more comments.
JPQL Query: select i from Item i where i.deleted is false and i.comments.size = (select max(i.comments.size) from Item i where i.deleted is false) group by i;
Descripci�n textual: En esta consulta tomamos el item que no haya sido borrado y que tenga como n�mero de comentarios el del item con mayor n�mero de comentarios. Finalmente agrupamos los resultados por su item.
Resultado:
Object #0 = domain.Item{
id=54
version=0
sku="9G-H58D"
name="Colonia"
description="Colonia de mujer"
price=10.9
tags=[Colonia]
picture=<null>
deleted=<<false>>
category=domain.Category@33
comments=[domain.Comment@3b, domain.Comment@3c]
storages=[domain.Storage@45]
}
Object #1 = domain.Item{
id=55
version=0
sku="Vl-3H95"
name="Filete de cerdo"
description="Filete bueno y barato"
price=3.5
tags=[Filete, Cerdo, Carne]
picture=<null>
deleted=<<false>>
category=domain.Category@31
comments=[domain.Comment@3d, domain.Comment@3e]
storages=[domain.Storage@46]
}
Loading

0 comments on commit 6c225a7

Please sign in to comment.