2013-07-08 3 views
0

У меня есть Excel файл, полный «премия Получатели», так как:Накопительного SQL Таблица

Name  | Date  | Category 
John  May-1  Fishing 
Mary  May-2  Swimming 
Sue  Jun-6  Fishing 

Я использую эту таблицу первенствовать в качестве входных данных в программу визуализации SQL под названием «QlikView». Вышеприведенный пример является очень упрощенным, столбцы имеют разные имена.

Теперь я хочу, чтобы сделать виртуальную таблицу кумулятивных данных

Category | Date  | Total Awards Given 
Fishing  May-1  1 
Fishing  Jun-6  2 
Swimming  May-2  1 

Я был бы рад быть передан в уже задал вопрос, но я не знаком с большинством языка на «Подобные вопросы» боковая панель.

Спасибо!

+5

является ли это вопрос SQL или вопрос Excel? – Woot4Moo

+2

также выход не имеет смысла с учетом ввода. Вы хотите получить общее количество? – Woot4Moo

+0

Примечание: В SQL «Виртуальная таблица» = «Просмотр». – RBarryYoung

ответ

1

Поскольку вы просили решение SQL, это ANSI SQL:

select category, 
     date, 
     count(*) over (partition by category) as total_awards, 
     count(*) over (partition by category order by date) as total_awards_so_far, 
from the_table 
order by category, date; 

Это предполагает, что Date (который ужасно имя для столбца) имеет тип данных date и, таким образом, могут быть отсортированы правильно.

+0

На самом деле это не называется «Дата». Это упрощенный пример. «originalSubscriptionDate» - это настоящая вещь - все еще плохо? – RodericDay

+2

@RodericDay * originalSubscriptionDate * отлично подходит как название столбца;) –

0

Как это SQL (ISO):

CREATE VIEW CumulativeAwards As 
    SELECT Category, "Date", COUNT(*) As "Total Awards Given" 
    FROM "Award Recipients" 
    GROUP BY Category, "Date" 
Смежные вопросы