简体   繁体   English

选择SQL中缺少表达式

[英]missing expression in Select SQL

I'm new to SQL and sub queries, When I run the sub query by itself I get the correct data output. 我是SQL和子查询的新手,当我自己运行子查询时,将获得正确的数据输出。 But when I run the full query I get the error message 但是,当我运行完整查询时,会收到错误消息

SELECT * Error at line 3: ORA-00936: missing expression SELECT *第3行出现错误:ORA-00936:缺少表达式

Here's my code: 这是我的代码:

SELECT 
MAX(
    SELECT 
    SUM(
        ALLOCATION.HourlyRate 
        * 
        ACTION.HrsWorked
        ) 
    FROM ALLOCATION 
    INNER JOIN ACTION 
    ON ((ACTION.ActId  = ALLOCATION.ActId) AND (ACTION.EmpId  = ALLOCATION.EmpId)) 
    GROUP BY (ALLOCATION.ActId)
)
FROM ALLOCATION
GROUP BY (ALLOCATION.ActId)

SOLUTION: 解:

   SELECT MAX(sum_total_pay)
FROM
(
    SELECT SUM(ALLOCATION.HourlyRate *  ACTION.HrsWorked) AS sum_total_pay
    FROM ALLOCATION 
    INNER JOIN ACTION 
    ON ((ACTION.ActId  = ALLOCATION.ActId) AND (ACTION.EmpId  = ALLOCATION.EmpId))
    GROUP BY (ALLOCATION.ActId)
);

You needs two parentheses more :) 您还需要两个括号:)

  SELECT MAX ( (  SELECT SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked)
                    FROM ALLOCATION INNER JOIN ACTION ON (ACTION.ActId = ALLOCATION.ActId) AND (ACTION.EmpId = ALLOCATION.EmpId)
                GROUP BY (ALLOCATION.ActId)))
    FROM ALLOCATION
GROUP BY ALLOCATION.ActId

The Select into MAX have to be in paranthesis. Select into MAX必须在括号内。

The logic is not clear. 逻辑尚不清楚。 This give you the total pay per activity: 这样就可以得出每次活动的总收入:

  SELECT ALLOCATION.ActId, SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked) total_pay
    FROM ALLOCATION b INNER JOIN ACTION ON ACTION.ActId = ALLOCATION.ActId AND ACTION.EmpId = ALLOCATION.EmpId
GROUP BY ALLOCATION.ActId

If you want to see, which activity has the biggest payment, then order by desc : 如果您想查看哪个活动支付的费用最高,请通过desc订购:

  SELECT *
    FROM (  SELECT ALLOCATION.ActId, SUM (ALLOCATION.HourlyRate * ACTION.HrsWorked) total_pay
              FROM ALLOCATION b INNER JOIN ACTION ON ACTION.ActId = ALLOCATION.ActId AND ACTION.EmpId = ALLOCATION.EmpId
          GROUP BY ALLOCATION.ActId)
ORDER BY total_pay DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM