SQL Distinct count кумулятивный - PullRequest
0 голосов
/ 15 октября 2018

Я хочу сделать запрос, который отображает следующий вход в следующий вывод:

Ввод:

a,b,id    
x,y,1    
x,y,2    
x,z,3    
t,z,4    
t,y,5
t,y,6

Выход:

count,id    
1,1    
1,2    
2,3    
1,4    
2,5
2,6

Использование следующегологика:

Для каждой отдельной группы в a подсчитайте, сколько разных элементов b для идентификаторов меньше или равно текущему идентификатору.


Я пробовал:

SELECT COUNT(a), b, id FROM table GROUP BY b

, но это не дает никаких кумулятивных результатов.

1 Ответ

0 голосов
/ 15 октября 2018

Один метод является коррелированным подзапросом:

select t.*,
       (select count(distinct t2.b) from t t2 where t2.a = t.a and t2.id <= t.id) 
from t;

Для производительности вы хотите в индексе на t(a, b).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...