Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2007, 13h05   #1
Membre actif
 
Avatar de Jean_Benoit
 
Inscription : juin 2004
Messages : 495
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juin 2004
Messages : 495
Points : 182
Points : 182
Par défaut [Discussion de Hugues 78 en 10 2006] sur With

Bonjour,

J'ai adapté l'ordres SQL de Hugues 78 à la table ORDERS:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
WITH frequentation AS ( 
SELECT 
  to_char( order_date, 'day' ) jour
, count(*) nb
FROM orders
GROUP BY to_char( order_date, 'day' )    )
SELECT 
  'Mini'
, jour
, a.nb
FROM ( SELECT min( nb )nb FROM frequentation ) a, frequentation
WHERE a.nb = frequentation.nb
union ALL
SELECT 
  'Maxi'
, jour
, a.nb
FROM ( SELECT max( nb )nb FROM frequentation ) a, frequentation
WHERE a.nb = frequentation.nb
union ALL
SELECT 
  'Moyenne'
, NULL
, a.nb
FROM ( SELECT avg( nb ) nb FROM frequentation ) a, frequentation
WHERE a.nb = frequentation.nb
Les Min() union all max() fonctionnent, mais pas le Avg (ni sur Sqldeveloper ni dans Sqlplus) (la requête tourne mais n'affiche que les lignes Mini et Maxi).
Dans ma table Orders la colonne Order_Date est de type Date.
J'ai du louper une étape mais je ne vois pas où

Merci pour votre aide et bravo à Hugues 78
Jean_Benoit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 13h14   #2
Membre actif
 
Avatar de Jean_Benoit
 
Inscription : juin 2004
Messages : 495
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juin 2004
Messages : 495
Points : 182
Points : 182
Par défaut Eurêka!!

J'ai relu la requête originale et j'ai vu qu'il n'y avait pas de where dans la dernière ligne.
Donc je l'ai supprimé.
ça affiche tout plein de AVG.
J'ai remplacé UNION ALL par UNION
ça affiche une seule moyenne.

Code :
1
2
3
4
5
6
7
8
9
10
 
.
.
union 
SELECT 
  'Moyenne'
, NULL
, a.nb
FROM ( SELECT round(avg( nb )) nb FROM frequentation ) a, frequentation
--where a.nb = frequentation.nb

Merci pour votre karma télépathique ( Man )
Jean_Benoit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h43.


 
 
 
 
Partenaires

Hébergement Web