Enjoy !
parent
8a750d4c86
commit
c70d64b355
244
README
244
README
|
@ -3,247 +3,3 @@ Hello everyone
|
||||||
You can watch all my little scripts in C and Perl.
|
You can watch all my little scripts in C and Perl.
|
||||||
|
|
||||||
Enjoy !
|
Enjoy !
|
||||||
|
|
||||||
MANGEZ
|
|
||||||
|
|
||||||
SELECT date, SUM(dollars) AS total_dollars,
|
|
||||||
SUM(SUM(dollars)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_dollars,
|
|
||||||
SUM(quantity) AS total_qty,
|
|
||||||
SUM(SUM(quantity)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING) AS run_qty
|
|
||||||
FROM aroma.period a, aroma.sales b, aroma.product c
|
|
||||||
WHERE a.perkey = b.perkey
|
|
||||||
AND c.prodkey = b.prodkey
|
|
||||||
AND c.classkey = b.classkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'JAN'
|
|
||||||
AND prod_name = 'Aroma Roma'
|
|
||||||
GROUP BY date
|
|
||||||
ORDER BY date;
|
|
||||||
|
|
||||||
|
|
||||||
SUM(SUM(dollars)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING)
|
|
||||||
|
|
||||||
OVER = OLAP aggregation function
|
|
||||||
|
|
||||||
MOVING Average = moyenne sur quelques jours pour faire une courbe de la moyenne (moins en dents de scie)
|
|
||||||
|
|
||||||
|
|
||||||
SELECT date, SUM(dollars) AS total_dollars,
|
|
||||||
SUM(SUM(dollars)) OVER(PARTITION BY week ORDER BY date
|
|
||||||
ROWS UNBOUNDED PRECEDING) AS run_dollars,
|
|
||||||
SUM(quantity) AS total_qty,
|
|
||||||
SUM(SUM(quantity)) OVER(PARTITION BY week ORDER BY date
|
|
||||||
ROWS UNBOUNDED PRECEDING) AS run_qty
|
|
||||||
FROM aroma.period a, aroma.sales b, aroma.product c
|
|
||||||
WHERE a.perkey = b.perkey
|
|
||||||
AND c.prodkey = b.prodkey
|
|
||||||
AND c.classkey = b.classkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'JAN'
|
|
||||||
AND prod_name = 'Aroma Roma'
|
|
||||||
GROUP BY week, date
|
|
||||||
ORDER BY week, date;
|
|
||||||
|
|
||||||
PARTITION BY week = Faire la somme mais par semaine
|
|
||||||
|
|
||||||
|
|
||||||
SELECT date, SUM(dollars) AS total_dollars,
|
|
||||||
SUM(SUM(dollars)) OVER (PARTITION BY week ORDER BY date
|
|
||||||
ROWS UNBOUNDED PRECEDING) AS run_dollars,
|
|
||||||
SUM(quantity) AS total_qty,
|
|
||||||
SUM(SUM(quantity)) OVER(PARTITION BY week ORDER BY date
|
|
||||||
ROWS UNBOUNDED PRECEDING) AS run_qty, week
|
|
||||||
FROM aroma.period a, aroma.sales b, aroma.product c
|
|
||||||
WHERE a.perkey = b.perkey
|
|
||||||
AND c.prodkey = b.prodkey
|
|
||||||
AND c.classkey = b.classkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'JAN'
|
|
||||||
AND prod_name = 'Aroma Roma'
|
|
||||||
GROUP BY week, date
|
|
||||||
ORDER BY week, date;
|
|
||||||
|
|
||||||
|
|
||||||
SELECT prod_name, SUM(dollars) AS total_sales, SUM(quantity) AS total_qty,
|
|
||||||
DEC(sum(dollars)/sum(quantity), 7, 2) AS price
|
|
||||||
FROM aroma.product a, aroma.sales b, aroma.period c
|
|
||||||
WHERE a.prodkey = b.prodkey
|
|
||||||
AND a.classkey = b.classkey
|
|
||||||
AND c.perkey = b.perkey
|
|
||||||
AND year = 2004
|
|
||||||
GROUP BY prod_name
|
|
||||||
ORDER BY price;
|
|
||||||
|
|
||||||
dec(sum(dollars)/sum(quantity), 7, 2) AS price
|
|
||||||
|
|
||||||
|
|
||||||
SELECT t1.date, sales_cume_west, sales_cume_south,
|
|
||||||
sales_cume_west - sales_cume_south AS west_vs_south
|
|
||||||
FROM
|
|
||||||
(SELECT date, SUM(dollars) AS total_sales,
|
|
||||||
SUM(SUM(dollars)) OVER(ORDER BY date
|
|
||||||
ROWS UNBOUNDED PRECEDING) AS sales_cume_west
|
|
||||||
FROM aroma.market a,
|
|
||||||
aroma.store b,
|
|
||||||
aroma.sales c,
|
|
||||||
aroma.period d
|
|
||||||
WHERE a.mktkey = b.mktkey
|
|
||||||
AND b.storekey = c.storekey
|
|
||||||
AND d.perkey = c.perkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'MAR'
|
|
||||||
AND region = 'West'
|
|
||||||
GROUP BY date) AS t1
|
|
||||||
JOIN
|
|
||||||
(SELECT date, SUM(dollars) AS total_sales,
|
|
||||||
SUM(SUM(dollars)) OVER(ORDER BY date ROWS UNBOUNDED PRECEDING) AS sales_cume_south
|
|
||||||
FROM aroma.market a,
|
|
||||||
aroma.store b,
|
|
||||||
aroma.sales c,
|
|
||||||
aroma.period d
|
|
||||||
WHERE a.mktkey = b.mktkey
|
|
||||||
AND b.storekey = c.storekey
|
|
||||||
AND d.perkey = c.perkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'MAR'
|
|
||||||
AND region = 'South'
|
|
||||||
GROUP BY date) AS t2
|
|
||||||
ON t1.date = t2.date
|
|
||||||
ORDER BY date;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SELECT city, week, SUM(dollars) AS sales,
|
|
||||||
DEC(AVG(SUM(dollars)) OVER(partition by city
|
|
||||||
ORDER BY city, week ROWS 2 PRECEDING),7,2) AS mov_avg,
|
|
||||||
SUM(SUM(dollars)) OVER(PARTITION BY city
|
|
||||||
ORDER BY week ROWS unbounded PRECEDING) AS run_sales
|
|
||||||
FROM aroma.store a,
|
|
||||||
aroma.sales b,
|
|
||||||
aroma.period c
|
|
||||||
WHERE a.storekey = b.storekey
|
|
||||||
AND c.perkey = b.perkey
|
|
||||||
AND qtr = 'Q3_05'
|
|
||||||
AND city IN ('San Jose', 'Miami')
|
|
||||||
GROUP BY city, week;
|
|
||||||
|
|
||||||
|
|
||||||
ROWS n PRECEDING (ou on peut aussi dire : FOLLOWING )
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SELECT date, SUM(quantity) AS day_qty,
|
|
||||||
DEC(SUM(SUM(quantity)) OVER(ORDER BY date
|
|
||||||
ROWS 6 PRECEDING),7,2) AS mov_sum
|
|
||||||
FROM aroma.sales a, aroma.period b, aroma.product c
|
|
||||||
WHERE b.perkey = a.perkey
|
|
||||||
AND c.classkey = a.classkey
|
|
||||||
AND c.prodkey = a.prodkey
|
|
||||||
AND year = 2006
|
|
||||||
AND month = 'MAR'
|
|
||||||
AND prod_name = 'Demitasse Ms'
|
|
||||||
GROUP BY date
|
|
||||||
ORDER BY date;
|
|
||||||
|
|
||||||
REPONSES :
|
|
||||||
|
|
||||||
# Total du montant des ventes par catégorie
|
|
||||||
|
|
||||||
select c.class_type, sum(s.dollars) as total
|
|
||||||
from aroma.class c, aroma.sales s, aroma.product p
|
|
||||||
where c.classkey = p.classkey
|
|
||||||
and p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
group by c.class_type
|
|
||||||
order by total desc
|
|
||||||
|
|
||||||
# Pourcentage du montant des ventes de chaque catégorie
|
|
||||||
|
|
||||||
select c.class_type, dec(100*sum(s.dollars)/(select sum(dollars) from aroma.sales),7,0) as part
|
|
||||||
from aroma.class c, aroma.sales s, aroma.product p
|
|
||||||
where c.classkey = p.classkey
|
|
||||||
and p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
group by c.class_type
|
|
||||||
order by part desc
|
|
||||||
|
|
||||||
# Classement des ventes par classes de produit
|
|
||||||
|
|
||||||
select c.class_type, dec(100*sum(s.dollars)/(select sum(dollars) from aroma.sales),7,0) as part, rank() over(order by sum(s.dollars) desc) as rang
|
|
||||||
from aroma.class c, aroma.sales s, aroma.product p
|
|
||||||
where c.classkey = p.classkey
|
|
||||||
and p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
group by c.class_type
|
|
||||||
order by part desc
|
|
||||||
|
|
||||||
# Produit le plus vendu, pourcentage correspondant
|
|
||||||
|
|
||||||
select p.prodkey, p.classkey, p.prod_name, p.pkg_type, dec(100*sum(s.dollars)/(select sum(dollars) from aroma.sales),7,0) as part
|
|
||||||
from aroma.sales s, aroma.product p
|
|
||||||
where p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
group by p.prodkey, p.classkey, p.prod_name, p.pkg_type
|
|
||||||
order by part desc²
|
|
||||||
|
|
||||||
# Montant des ventes des produits par semaine
|
|
||||||
|
|
||||||
select p.prodkey, p.classkey, p.prod_name, p.pkg_type, t.week, sum(s.dollars) as montant
|
|
||||||
from aroma.sales s, aroma.product p, aroma.period t
|
|
||||||
where p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
and s.perkey = t.perkey
|
|
||||||
group by p.prodkey, p.classkey, p.prod_name, p.pkg_type,t.week
|
|
||||||
order by t.week
|
|
||||||
|
|
||||||
# Classement des produits par montant des ventes décroissant pour chaque semaine
|
|
||||||
|
|
||||||
select p.prodkey, p.classkey, p.prod_name, p.pkg_type, t.week, sum(s.dollars) as montant, rank() over(partition by week order by week, sum(s.dollars) desc) as rang
|
|
||||||
from aroma.sales s, aroma.product p, aroma.period t
|
|
||||||
where p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
and s.perkey = t.perkey
|
|
||||||
group by p.prodkey, p.classkey, p.prod_name, p.pkg_type,t.week
|
|
||||||
order by t.week, rang
|
|
||||||
|
|
||||||
# Classement moyen des produits en vente hebdomadaire
|
|
||||||
|
|
||||||
select t.prodkey, t.classkey, t.prod_name, t.pkg_type, avg(rang) as rang_moyen
|
|
||||||
from (select p.prodkey, p.classkey, p.prod_name, p.pkg_type, t.week, sum(s.dollars) as montant, rank() over(partition by week order by week, sum(s.dollars) desc) as rang
|
|
||||||
from aroma.sales s, aroma.product p, aroma.period t
|
|
||||||
where p.prodkey = s.prodkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
and s.perkey = t.perkey
|
|
||||||
group by p.prodkey, p.classkey, p.prod_name, p.pkg_type,t.week
|
|
||||||
order by t.week, rang) as t(prodkey,classkey,prod_name,pkg_type,week,montant,rang)
|
|
||||||
group by t.prodkey,t.classkey, t.prod_name, t.pkg_type
|
|
||||||
|
|
||||||
# Montant moyen des ventes par jour de la semaine
|
|
||||||
|
|
||||||
select ti.day, avg(ti.montant) as moyenne
|
|
||||||
from (select t.day,sum(dollars)
|
|
||||||
from aroma.sales s, aroma.period t
|
|
||||||
where s.perkey = t.perkey
|
|
||||||
group by t.perkey,t.day) as ti(day,montant)
|
|
||||||
group by ti.day
|
|
||||||
order by moyenne desc
|
|
||||||
|
|
||||||
|
|
||||||
MES REPONSES
|
|
||||||
|
|
||||||
select c.class_type, SUM(s.dollars) as total
|
|
||||||
from aroma.class c, aroma.sales s, aroma.product p
|
|
||||||
where c.classkey = p.classkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
and p.prodkey = s.prodkey
|
|
||||||
group by c.class_type
|
|
||||||
order by total desc
|
|
||||||
|
|
||||||
|
|
||||||
select c.class_type, dec(100*sum(s.dollars)/(select sum(dollars) from aroma.sales), 7,0)
|
|
||||||
from aroma.class c, aroma.product p, aroma.sales s
|
|
||||||
where c.classkey = p.classkey
|
|
||||||
and p.classkey = s.classkey
|
|
||||||
and p.prodkey = s.prodkey
|
|
||||||
group by c.class_type;
|
|
||||||
|
|
Loading…
Reference in New Issue