oracle - 对子查询求和?

时间:2009-04-23 18:58:48

标签: sql oracle

不知道是否有人可以帮助我理解如何总结单列专栏,即将成本列表合并为一个总成本。

我一直在研究这个问题,我认为我在unscanding中处于正确的界限,我需要对查询求和,将其视为子查询。但是我没有太多运气 - 我是否需要给子查询一个别名,或者是一个将查询包装成总和的直接案例?

这是我想要总结的工作查询,为了清晰起见,我所有的总和尝试都被遗漏了!

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 :(得分:0)

您可以使用

对单个列求和

从mytable中选择sum(mycolumn)

当您使用字段混合选择列表中的聚合器(例如,sum(),count())时,您可以更改查询的含义。您必须包含GROUP BY子句,该子句必须包含选择列表的每个非聚合部分。

您可以在嵌套子查询中单独执行求和,然后在外部选择中包含该输出...

答案 1 :(得分:0)

尝试:

如果您想要每个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

****与上面几乎相同的答案,我需要在发布****之前更好地刷新

答案 2 :(得分:0)

您首先需要知道的是查询的“非求和部分”应该是什么。

您想要通过Y计算X的和(例如,按MONTH计算SALES的总和)。 Y可以是任意数量的字段,结果数据集将包含Y字段的每个不同组合的一条记录。

一旦您知道我们可以帮助您撰写查询。