运行总和/计数

时间:2015-01-20 15:52:34

标签: sql oracle

我想知道如何添加总计。我需要按人添加所有sale_id。它应该如下所示。我可以提取sale_name和sale_id,但我不确定如何创建一个总计如下面的sale_num的列和行。谢谢。

sale_Name sale_id sale_num

Jim Thomas 157452
Jim Thomas 153352
Jim Thomas 198762
Jim Thomas 3
Bill Simpson 254854 
Bill Simpson 265782
Bill Simpson 233122 
Bill Simpson 257411 
Bill Simpson 4

3 个答案:

答案 0 :(得分:0)

SELECT COUNT(*) FROM table_name WHERE sale_Name = 'Jim';

答案 1 :(得分:0)

这会将sale_num作为一个单独的列,而不是您在预期输出中的单独行:

SELECT sale_name, sale_id, COUNT(*) OVER ( PARTITION BY sale_name ) AS sale_num
  FROM mytable

答案 2 :(得分:0)

如果您想在结果中看到小计,可以尝试rollup功能,例如:

with t as
(
select 'Jim Thomas' sale_name, 157452 sale_id from dual union all
select 'Jim Thomas' sale_name, 153352 sale_id from dual union all
select 'Jim Thomas' sale_name, 198762 sale_id from dual union all

select 'Bill Simpson' sale_name, 254854 sale_id from dual union all
select 'Bill Simpson' sale_name, 265782 sale_id from dual union all
select 'Bill Simpson' sale_name, 233122 sale_id from dual union all
select 'Bill Simpson' sale_name, 257411 sale_id from dual 
)
SELECT sale_name, sale_id, count(sale_id) FROM t
GROUP BY rollup(sale_name, sale_id)
ORDER BY 1,2