Oracle中的SUM(COUNT())

丹尼尔·劳顿

我正在尝试找出如何根据一列的计数乘以联接表的另一列的数目来创建一列。

以下是我到目前为止尝试过的方法:

尝试1:

select a.course_id, sum(count(*)*c.FEE) as "Income", c.COURSE_NAME,c.STORE,c.VENUE,c.COURSE_LEVEL,c.COURSE_DATE,c.DURATION,c.FEE,c.STAFF 
from attendancecheck a
inner join course c
on a.course_id = c.course_id
group by a.course_id, c.COURSE_NAME,c.STORE,c.VENUE,c.COURSE_LEVEL,c.COURSE_DATE,c.DURATION,c.FEE,c.STAFF 
order by "Income"

我收到错误消息:ORA-00937:不是单组分组功能

尝试2:

select a.course_id, sum(People_on_course * c.Fee) as "Income", c.COURSE_NAME,c.STORE,c.VENUE,c.COURSE_LEVEL,c.COURSE_DATE,c.DURATION,c.FEE,c.STAFF 
from (SELECT COUNT(a.participant_id) as People_on_course
from attendancecheck a)
inner join course c
on a.course_id = c.course_id
group by a.course_id, c.COURSE_NAME,c.STORE,c.VENUE,c.COURSE_LEVEL,c.COURSE_DATE,c.DURATION,c.FEE,c.STAFF
order by "Income"

我收到错误消息:ORA-00904:“ A”。“ COURSE_ID”:无效的标识符

如果有人可以在正确的方向上指导我,那将很棒。

干杯,丹尼尔

思考长臂猿

您为什么要汇总已经计算在内的参与者?只需使用count,再乘以费用,仅此而已。申请,left join而不是join万一没有参与者参加任何课程。您还可以使用子查询来计算每门课程的参与者。

演示

select c.course_id, count(a.participant_id) * c.fee as income, c.course_name, 
       c.store, c.venue, c.course_level, c.course_date, c.duration, c.fee, c.staff 
  from course c
  left join attendancecheck a on a.course_id = c.course_id
  group by c.course_id, c.course_name, c.store, c.venue, 
       c.course_level, c.course_date, c.duration, c.fee, c.staff 
  order by income

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章