оракул - сумма на подзапрос? - PullRequest
0 голосов
/ 23 апреля 2009

Интересно, кто-нибудь может помочь мне понять, как суммировать столбец из одного столбца, то есть список затрат в одну общую стоимость.

Я изучал это, и я думаю, что я в правильных строках в undertsand, мне нужно суммировать запрос, рассматривать его как подзапрос. Однако мне не очень повезло - мне нужно дать псевдониму подзапросу, или это прямой случай оборачивания запроса в сумму?

Вот рабочий запрос, который я хочу подвести, все мои попытки суммирования оставлены для ясности!

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');

некоторые данные ...

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 

Спасибо!

Ответы [ 3 ]

0 голосов
/ 23 апреля 2009

Попробуйте:

Вам необходимо включить группу, если вы хотите, чтобы итоги по идентификатору.

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

**** В значительной степени тот же ответ, что и выше, мне нужно лучше освежиться перед публикацией ****

0 голосов
/ 23 апреля 2009

Сначала вам нужно знать, какой должна быть «не суммированная часть» запроса.

Вы хотите рассчитать сумму X по Y (например, сумма продаж по месяцам). Y может быть любым числом полей, и результирующий набор данных будет содержать одну запись для каждой отдельной комбинации полей Y.

Как только вы узнаете, что мы можем помочь вам написать ваш запрос.

0 голосов
/ 23 апреля 2009

Вы можете суммировать один столбец с

выберите сумму (mycolumn) из mytable

Когда вы смешиваете агрегаторы (например, sum (), count ()) в списке выбора с полями, вы меняете смысл запроса. Вы должны включить предложение GROUP BY, и это предложение должно содержать каждую неагрегированную часть списка выбора.

Вы можете сами сделать сумму во вложенном подзапросе, а затем включить этот вывод во внешний выбор ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...