Oracle SQL Developer - 结合笛卡尔积,计数/求和和分组

时间:2012-05-11 11:45:13

标签: sql oracle cartesian-product

我使用笛卡儿积分加入2个表如下。

select p.type, i.amount 
FROM products p, invoice i
where (p.account = i.id); -- column headers cant be changed despite having same info

这当然会显示2列及各自的值。

然而,我想使用COUNT / GROUP BY和SUM / GROUP BY进一步操作数据,但是无法找到任何可以使用2个表工作的​​相关示例。 (单独完成它们就可以了,只是让它们一起工作就是问题所在。)

对于最终结果,我想显示3列,显示4种类型的分组,每种类型下的条目数,以及每种类型的总量/ SUM,例如

类型 - 类型计数 - 总值

A - 5 - 500

B - 6 - 1000

C - 1 - 50

D - 2 - 100

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

select p.type, count(p.type) Cnt, sum(i.amoumt) Total
FROM products p, invoice i
where (p.account = i.id)
group by p.type

答案 1 :(得分:0)

请记住,查询的结果在逻辑上等同于表或视图 - 所有这些都是具有一列或多列的零行或多行的投影。

一般来说,您可以根据select对表进行操作,也可以对查询或视图执行操作。尽管有一些限制,您也可以像对表一样对视图和查询应用删除和更新。

如果有疑问,请创建返回所需数据的查询,然后将其视为表格:

select   type,
         count(type) count_type,
         sum(amount) sum(amount)
from     (select ... )
group by type

还要注意子查询因子子句,如果需要多次引用相同的逻辑数据集,它具有特定的应用程序:

with my_data as(
    select ... )
select   type,
         count(type) count_type,
         sum(amount) sum(amount)
from     my_data
where    type in (select ... from my_data)
group by type