Совокупный подсчет в SQL - PullRequest
0 голосов
/ 18 июня 2020

Я изо всех сил пытаюсь написать запрос, который получает совокупное количество различных значений для значений в столбце.

table column:           desired column:
a                       1
b                       1
c                       1
c                       2
c                       3
a                       2
a                       3

Объяснение:

row 1 имеет значение a, есть нет предшествующих строк со значением a, поэтому мы считаем a один раз и получаем 1.

row 2 имеет значение b, предшествующих строк со значением b нет, поэтому мы считаем b один раз и получаем 1.

row 3 имеет значение c, предшествующих строк со значением c нет, поэтому мы считаем c один раз и получаем 1.

row 4 имеет значение c, есть 1 предыдущая строка со значением c, поэтому мы считаем c дважды и получаем 2.

row 5 имеет значение c, есть 2 предыдущие строки со значением c, поэтому мы считаем c трижды и получаем 3.

row 6 имеет значение a, есть 1 предыдущая строка со значением a, поэтому мы посчитайте a дважды и получите 2.

row 7 имеет значение a, есть 2 предшествующие строки со значением a, поэтому мы считаем a трижды и получаем 3.

Любая помощь была бы замечательной!

1 Ответ

1 голос
/ 18 июня 2020

Если ваша версия SQL поддерживает его, то ROW_NUMBER является одним из вариантов здесь:

SELECT
    col,
    ROW_NUMBER() OVER (PARTITION BY col ORDER BY col) cn
FROM yourTable;

screen capture of demo below

Demo

Обратите внимание, что предложение ORDER BY, используемое выше в ROW_NUMBER, является произвольным, поскольку в пределах раздела значений столбца все будут иметь одно и то же значение.

...