2015-01-20 3 views
0

Мне интересно, как я бы добавил итоговые суммы. Мне нужно добавить все sale_id на человека. Он должен выглядеть следующим образом. Я могу вытащить имя_продажа и 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 
+0

Добавить правильные данные образца и ожидаемый результат –

+0

Какую версию вы используете? – HGF

+0

Обычно вы не выводите разные данные в одном столбце (в вашем примере столбец результатов «sale_id» содержит sale_id в некоторых строках и результат агрегирования в других) ... Однако вы можете получить желаемый результат с помощью 'UNION [ALL ] '. Я бы предпочел использовать аналитическое предложение и выполнить общее число как отдельный столбец. Кроме того, в чем смысл наличия столбца 'sale_num', который всегда пуст? – a1ex07

ответ

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

Что это делает для продавцов, названных чем-то иным, чем 'Jim'? –

0

Это даст вам sale_num в отдельной колонке в отличие от отдельной строки, как у вас в вашем ожидаемом результате:

SELECT sale_name, sale_id, COUNT(*) OVER (PARTITION BY sale_name) AS sale_num 
    FROM mytable 
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 
Смежные вопросы