Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 20/05/2011, 00h20   #1
Membre habitué
 
Avatar de arnaud036
 
Inscription : juillet 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 199
Points : 120
Points : 120
Par défaut Récupérer la date minimum d'une sous-table

Bonjour,

Je suis bloque pour recuperer la date minimum d'une sous-table (sans duplique ma requete), que je voudrais utiliser dans ma clause where pour filter mes donnees.

Voici ma solution:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
SELECT
    ga.id,
    sum(ga.total) AS total
FROM
    table1 ga,
    (SELECT dfp_id__c, start_date__c 
    FROM table2
    WHERE dfp_id__c IN (5000033657)) oms
WHERE
    ga.ad_id = oms.dfp_id__c
AND ga.source_id > 0 
AND ga.date >= 
(SELECT min(oms.start_date__c) 
FROM (    
    (SELECT dfp_id__c, start_date__c 
    FROM table2
    WHERE dfp_id__c IN (5000033657)) oms)
)
AND ga.date <= to_date('02/02/2011')
GROUP BY
    ga.id
Mais je pense qu'il y a un moyen plus propre pour faire cela.
__________________
My blog: http://arnaud036.free.fr
arnaud036 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 09h36   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Utilisez Min sous sa forme de fonction analytique.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/05/2011, 20h06   #3
Membre habitué
 
Avatar de arnaud036
 
Inscription : juillet 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 199
Points : 120
Points : 120
Voici ma solution en utilisant min comme fonction analytique mais sa prend 10 fois plus de temps a s'executer. Je pense que je ne dois pas l'utiliser de la bonne facon.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
    ga.ad_id,
    ga.creative_id,
    sum(ga.total_impressions) AS total_impressions,
    sum(ga.total_clicks) AS total_clicks
FROM
    table1 ga,
    (SELECT dfp_id__c, min(start_date__c) over() AS min_start_date
    FROM table2
    WHERE dfp_id__c IN (5000033657,5000006679, 5000026560)) oms
WHERE
    ga.ad_id = oms.dfp_id__c
AND ga.source_id > 0
AND ga.date_id >= to_number(to_char(oms.min_start_date,'YYYYMMDD'), 99999999)
AND ga.date_id <= 20110518
GROUP BY
    ga.ad_id,
    ga.creative_id;
__________________
My blog: http://arnaud036.free.fr
arnaud036 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 16h08.


 
 
 
 
Partenaires

Hébergement Web