finish queries window
This commit is contained in:
119
src/queries.vala
119
src/queries.vala
@@ -39,34 +39,123 @@ namespace Sernatur {
|
||||
*/
|
||||
public const string Q1_SQL = "CREATE VIEW REGIONES_SINDESCUENTO(nombreRegion, cantidad)
|
||||
AS (
|
||||
SELECT nombre_region, COUNT(R2.rut_turista) FROM region R
|
||||
JOIN ciudad C ON (C.id_region = R.id_region) JOIN tour T ON (T.id_ciudad = C.id_ciudad)
|
||||
JOIN realiza R2 ON (R2.id_tour = T.id_tour)
|
||||
WHERE (
|
||||
EXISTS(SELECT fecha_llegada
|
||||
FROM asociado
|
||||
WHERE (id_tour = T.id_tour AND fecha_llegada BETWEEN '2018-11-01' AND '2018-11-30')
|
||||
) AND
|
||||
R2.id_descuento = 2
|
||||
)
|
||||
GROUP BY (R.nombre_region)
|
||||
SELECT nombre_region, COUNT(R2.rut_turista) FROM region R
|
||||
JOIN ciudad C ON (C.id_region = R.id_region) JOIN tour T ON (T.id_ciudad = C.id_ciudad)
|
||||
JOIN realiza R2 ON (R2.id_tour = T.id_tour)
|
||||
WHERE (
|
||||
EXISTS(SELECT fecha_llegada
|
||||
FROM asociado
|
||||
WHERE (id_tour = T.id_tour AND fecha_llegada BETWEEN '2018-11-01' AND '2018-11-30')
|
||||
) AND
|
||||
R2.id_descuento = 2
|
||||
)
|
||||
GROUP BY (R.nombre_region)
|
||||
);
|
||||
SELECT nombreRegion, cantidad FROM REGIONES_SINDESCUENTO WHERE (cantidad = (SELECT MAX(cantidad) FROM REGIONES_SINDESCUENTO));";
|
||||
/**
|
||||
* The Q2 SQL
|
||||
*/
|
||||
public const string Q2_SQL = "";
|
||||
public const string Q2_SQL = "CREATE VIEW VALORES_TOURS(idT, nombreT, TotalVentas)
|
||||
AS (
|
||||
SELECT T.id_tour, T.nombre_tour,
|
||||
((CASE
|
||||
WHEN T.minima_personas <= (SELECT COUNT(rut_turista) FROM realiza WHERE (id_tour = T.id_tour))
|
||||
THEN (SELECT costo_grupal FROM tour WHERE (id_tour = T.id_tour))
|
||||
ELSE (SELECT costo_indiv FROM tour WHERE (id_tour = T.id_tour))
|
||||
END) * COUNT(rut_turista)) AS cantidad
|
||||
FROM tour T
|
||||
JOIN realiza R ON (T.id_tour = R.id_tour)
|
||||
GROUP BY (T.id_tour)
|
||||
);
|
||||
|
||||
CREATE VIEW TOUR_DESCUENTOS(idT, nombreT, TotalDescuentos)
|
||||
AS (
|
||||
SELECT T.id_tour, T.nombre_tour,
|
||||
SUM(DISTINCT (SELECT porcentaje FROM descuento WHERE (id_descuento = R.id_descuento)) *
|
||||
(SELECT COUNT(rut_turista) FROM realiza WHERE (id_tour = R.id_tour AND id_descuento = R.id_descuento)) *
|
||||
(CASE
|
||||
WHEN T.minima_personas <= (SELECT COUNT(rut_turista) FROM realiza WHERE (id_tour = T.id_tour))
|
||||
THEN (SELECT costo_grupal FROM tour WHERE (id_tour = T.id_tour))
|
||||
ELSE (SELECT costo_indiv FROM tour WHERE (id_tour = T.id_tour))
|
||||
END)) AS test
|
||||
FROM tour T
|
||||
JOIN realiza R ON (T.id_tour = R.id_tour)
|
||||
WHERE (R.id_descuento != 2)
|
||||
GROUP BY (T.id_tour)
|
||||
);
|
||||
|
||||
SELECT V.nombreT, (V.TotalVentas - COALESCE(MAX(T.TotalDescuentos), 0)) AS ValorTotalRecibido
|
||||
FROM VALORES_TOURS V FULL JOIN TOUR_DESCUENTOS T ON (T.idT = V.idT) GROUP BY (V.nombreT, V.TotalVentas);";
|
||||
/**
|
||||
* The Q3 SQL
|
||||
*/
|
||||
public const string Q3_SQL = "";
|
||||
public const string Q3_SQL = "CREATE VIEW TOTAL_COORDINADORES(idT, nombreT, TotalCoordinadores)
|
||||
AS (
|
||||
SELECT T.id_tour, T.nombre_tour, COUNT(DISTINCT P.rut_guia)
|
||||
FROM participa P
|
||||
JOIN tour T ON (T.id_tour = P.id_tour)
|
||||
JOIN guia G ON (G.rut_guia = P.rut_guia)
|
||||
JOIN categoria C ON (C.id_categoria = P.id_categoria)
|
||||
JOIN posee P2 ON (G.rut_guia = P2.rut_guia)
|
||||
JOIN asociado A ON (A.id_tour = T.id_tour)
|
||||
JOIN lugar L ON (L.id_lugar = A.id_lugar)
|
||||
WHERE (
|
||||
C.descripcion_categoria = 'Coordinador' AND
|
||||
EXISTS(SELECT FROM lugar WHERE (id_lugar = L.id_lugar AND L.nivel = 3)) AND
|
||||
(SELECT COUNT(rut_guia) FROM posee WHERE (rut_guia = G.rut_guia)) > 3
|
||||
)
|
||||
GROUP BY (T.id_tour)
|
||||
);
|
||||
|
||||
SELECT nombreT, TotalCoordinadores FROM TOTAL_COORDINADORES WHERE (TotalCoordinadores = (SELECT MAX(TotalCoordinadores) FROM TOTAL_COORDINADORES));";
|
||||
/**
|
||||
* The Q4 SQL
|
||||
*/
|
||||
public const string Q4_SQL = "";
|
||||
public const string Q4_SQL = "CREATE VIEW TOTAL_TURISTAS(idT, nombreT, TotalTuristas)
|
||||
AS (
|
||||
SELECT T.id_tour, T.nombre_tour, COUNT(R.rut_turista)
|
||||
FROM tour T
|
||||
JOIN realiza R ON (T.id_tour = R.id_tour)
|
||||
JOIN asociado A ON (T.id_tour = A.id_tour)
|
||||
JOIN lugar L ON (A.id_lugar = L.id_lugar)
|
||||
WHERE (
|
||||
EXISTS (SELECT id_lugar FROM lugar WHERE (id_lugar = L.id_lugar AND nivel >= 5)) AND
|
||||
(A.fecha_llegada BETWEEN '2018-10-01' AND '2018-10-31') AND
|
||||
NOT EXISTS (
|
||||
SELECT id_enfermedad
|
||||
FROM tiene_enfermedad
|
||||
WHERE (rut_turista = R.rut_turista AND
|
||||
(id_enfermedad = 1 OR id_enfermedad = 3)
|
||||
)
|
||||
)
|
||||
)
|
||||
GROUP BY (T.id_tour)
|
||||
);
|
||||
|
||||
SELECT nombreT, TotalTuristas FROM TOTAL_TURISTAS WHERE (TotalTuristas = (SELECT MAX(TotalTuristas) FROM TOTAL_TURISTAS));";
|
||||
/**
|
||||
* The Q5 SQL
|
||||
*/
|
||||
public const string Q5_SQL = "";
|
||||
public const string Q5_SQL = "CREATE VIEW TOTAL_ARRIENDOS(TotalArriendo)
|
||||
AS (SELECT COUNT(A.patente)
|
||||
FROM arrienda A
|
||||
JOIN requerir_auto R ON (R.patente = A.patente)
|
||||
JOIN tour T ON (T.id_tour = R.id_tour)
|
||||
JOIN asociado A2 ON (T.id_tour = A2.id_tour)
|
||||
WHERE (A2.fecha_llegada BETWEEN '2018-01-01' AND '2018-02-28')
|
||||
);
|
||||
|
||||
CREATE VIEW TOTAL_VEHICULOS(TotalVeh)
|
||||
AS (SELECT COUNT(V.patente)
|
||||
FROM vehiculo V
|
||||
JOIN requerir_auto R ON (R.patente = V.patente)
|
||||
JOIN tour T ON (T.id_tour = R.id_tour)
|
||||
JOIN asociado A ON (T.id_tour = A.id_tour)
|
||||
WHERE (A.fecha_llegada BETWEEN '2018-01-01' AND '2018-02-28')
|
||||
);
|
||||
|
||||
SELECT
|
||||
(cast(T1.totalarriendo AS DECIMAL(3,2)) / cast(T2.totalveh AS DECIMAL(3,2))) AS porcentaje
|
||||
FROM total_arriendos AS T1, total_vehiculos AS T2;";
|
||||
}
|
||||
}
|
||||
|
@@ -30,10 +30,25 @@ namespace Sernatur {
|
||||
* The queries that can be called
|
||||
*/
|
||||
public enum Query {
|
||||
/**
|
||||
* The Q1 query
|
||||
*/
|
||||
Q1,
|
||||
/**
|
||||
* The Q2 query
|
||||
*/
|
||||
Q2,
|
||||
/**
|
||||
* The Q3 query
|
||||
*/
|
||||
Q3,
|
||||
/**
|
||||
* The Q4 query
|
||||
*/
|
||||
Q4,
|
||||
/**
|
||||
* The Q5 query
|
||||
*/
|
||||
Q5
|
||||
}
|
||||
/**
|
||||
@@ -164,7 +179,7 @@ namespace Sernatur {
|
||||
if (button == run_query) {
|
||||
list_store.clear ();
|
||||
if (query == Query.Q1) {
|
||||
var region_list = RegionesSinDescuento.get_regions (conn.db);
|
||||
var region_list = Views.Q1.get_regions_without_discount (conn.db);
|
||||
|
||||
region_list.foreach ((entry) => {
|
||||
Gtk.TreeIter iter;
|
||||
@@ -174,6 +189,49 @@ namespace Sernatur {
|
||||
Q1Column.QUANTITY, entry.cantidad);
|
||||
});
|
||||
}
|
||||
else if (query == Query.Q2) {
|
||||
var value_list = Views.Q2.get_value_received (conn.db);
|
||||
|
||||
value_list.foreach ((entry) => {
|
||||
Gtk.TreeIter iter;
|
||||
list_store.append (out iter);
|
||||
list_store.set (iter,
|
||||
Q2Column.TOUR_NAME, entry.nombre_tour,
|
||||
Q2Column.TOTAL_VALUE, Money.format_uint (entry.valor_recibido));
|
||||
});
|
||||
}
|
||||
else if (query == Query.Q3) {
|
||||
var value_list = Views.Q3.get_total_coordinators (conn.db);
|
||||
|
||||
value_list.foreach ((entry) => {
|
||||
Gtk.TreeIter iter;
|
||||
list_store.append (out iter);
|
||||
list_store.set (iter,
|
||||
Q3Column.TOUR_NAME, entry.nombre_tour,
|
||||
Q3Column.COORDINATOR_TOTAL, entry.total_coordinadores);
|
||||
});
|
||||
}
|
||||
else if (query == Query.Q4) {
|
||||
var value_list = Views.Q4.get_total_tourists (conn.db);
|
||||
|
||||
value_list.foreach ((entry) => {
|
||||
Gtk.TreeIter iter;
|
||||
list_store.append (out iter);
|
||||
list_store.set (iter,
|
||||
Q4Column.TOUR_NAME, entry.nombre_tour,
|
||||
Q4Column.TOURIST_TOTAL, entry.total_turistas);
|
||||
});
|
||||
}
|
||||
else if (query == Query.Q5) {
|
||||
var value_list = Views.Q5.get_percentage (conn.db);
|
||||
|
||||
value_list.foreach ((entry) => {
|
||||
Gtk.TreeIter iter;
|
||||
list_store.append (out iter);
|
||||
list_store.set (iter,
|
||||
Q5Column.PERCENTAGE, Percentage.format_float (entry.porcentaje));
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (button == close_query) {
|
||||
this.close ();
|
||||
@@ -246,7 +304,7 @@ namespace Sernatur {
|
||||
|
||||
list_store = new Gtk.ListStore (Q2Column.N_COLUMNS,
|
||||
typeof (string),
|
||||
typeof (uint));
|
||||
typeof (string));
|
||||
|
||||
query_tree.set_model (list_store);
|
||||
|
||||
@@ -284,7 +342,7 @@ namespace Sernatur {
|
||||
this.set_title (dgettext (null, "(Q5) Vehicle total"));
|
||||
|
||||
list_store = new Gtk.ListStore (Q5Column.N_COLUMNS,
|
||||
typeof (float));
|
||||
typeof (string));
|
||||
|
||||
query_tree.set_model (list_store);
|
||||
|
||||
|
Reference in New Issue
Block a user