2009-04-23 7 views
0

Je me demande si quelqu'un peut m'aider à comprendre comment résumer la colonne d'une seule colonne, c'est-à-dire une liste de coûts en un seul coût total.oracle - somme sur une sous-requête?

J'ai regardé ceci, et je pense que je suis sur les bonnes lignes dans undertsanding que j'ai besoin de résumer la requête, la traiter comme une sous-requête. Cependant je n'ai pas beaucoup de chance - ai-je besoin de donner un alias à la sous-requête, ou est-ce un cas direct d'encapsulation de la requête dans une somme?

Voici la requête de travail que je veux résumer, toutes mes tentatives de somme à exclure pour plus de clarté!

SELECT TICKET_TYPE.PRICE AS TOTALSALES, RESERVATION.RESERVATION_ID, 
     CINEMA.LOCATION, PERFORMANCE.PERFORMANCE_DATE 
    FROM RESERVATION, TICKET, TICKET_TYPE, CINEMA, PERFORMANCE 
    WHERE TICKET_TYPE.TICKET_TYPE_ID = TICKET.TICKET_TYPE_ID 
     AND TICKET.RESERVATION_ID = RESERVATION.RESERVATION_ID 
     AND RESERVATION.PERFORMANCE_ID = PERFORMANCE.PERFORMANCE_ID 
     AND CINEMA.LOCATION = 'sometown' 
     AND PERFORMANCE.PERFORMANCE_DATE = to_date('01/03/2009','DD/MM/yyyy'); 

certaines des données ...

TOTALSALES RESERVATION_ID LOCATION PERFORMANCE_DATE 
    2.8  1  sometown  01-MAR-09 
    3.5  2  sometown  01-MAR-09 
    2.8  3  sometown  01-MAR-09 
    2.8  3  sometown  01-MAR-09 
    2.8  3  sometown  01-MAR-09 
    2  4  sometown  01-MAR-09 
    2.8  5  sometown  01-MAR-09 

Merci!

+0

Actuellement, il n'y a rien liant CINEMA à PERFORMANCE Tableaux, pas de relations PK/FK, ce qui causerait quelques problèmes ... – curtisk

Répondre

0

Essayez:

Vous devez inclure un groupe par si vous voulez que les totaux par ID.

SELECT SUM(TICKET_TYPE.PRICE) AS TOTALSALES 
      , RESERVATION.RESERVATION_ID 
      , CINEMA.LOCATION 
      , PERFORMANCE.PERFORMANCE_DATE 
     FROM RESERVATION 
      , TICKET 
      , TICKET_TYPE 
      , CINEMA 
      , PERFORMANCE 
     WHERE TICKET_TYPE.TICKET_TYPE_ID = TICKET.TICKET_TYPE_ID 
     AND TICKET.RESERVATION_ID = RESERVATION.RESERVATION_ID 
     AND RESERVATION.PERFORMANCE_ID = PERFORMANCE.PERFORMANCE_ID 
     AND CINEMA.LOCATION = 'sometown' 
     AND PERFORMANCE.PERFORMANCE_DATE = to_date('01/03/2009','DD/MM/yyyy'); 
    GROUP BY RESERVATION.RESERVATION_ID 

**** à peu près la même réponse que ci-dessus, je dois mieux à rafraîchir avant de poster ****

+0

salut - merci pour les commentaires - vraiment utile, quand je joue avec le sql je peux maintenant obtenir la sortie pour additionner le total des réservations, ce qui est un pas dans la bonne direction - mais je vise un total de chaque rangée pour montrer le total pour toute la période, donc fondamentalement j'aurai une rangée avec un grand total à la fin. –

+0

Je pense que je l'ai peut-être craqué maintenant, j'ai sorti le reservation_id dans le select et je l'ai sorti du groupe (j'ai mis tous les champs select) une fois que je l'ai fait ça semble fonctionner. Merci pour l'aide à la compréhension! –

0

Vous pouvez résumer une seule colonne avec

somme sélection (mycolumn) de matable

Lorsque vous agrégateurs mix (par exemple, la somme(), count()) dans la liste de sélection avec des champs que vous modifiez la signification de la requête. Vous devez inclure une clause GROUP BY et la clause doit contenir toutes les parties non agrégées de la liste de sélection.

Vous pouvez faire la somme, par lui-même, dans une sous-requête imbriquée comprennent alors que la production dans la sélection externe ...

+0

merci pour le conseil, je sens que je comprends la somme maintenant, eveerthings de travail. –

0

Ce que vous devez d'abord savoir est ce que la « partie non additionnées » de la requête devrait être.

Vous souhaitez calculer une Somme de X par Y (Somme des VENTES par MOIS par exemple). Y peut être un nombre quelconque de champs et l'ensemble de données résultant contiendra un enregistrement pour chaque combinaison distincte des champs Y.

Une fois que vous saurez que nous pouvons vous aider à écrire votre requête.

+0

J'ai réussi à le faire fonctionner - merci pour les conseils –

Questions connexes