Группировать по схожему номеру SQL (Oracle SQL) - PullRequest
2 голосов
/ 03 октября 2019

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

sale_number | value 
------------+-------
 1          |    10
 2          |    11
 3          |    21 
 4          |    30 

Ванильное group by групп операторов по точным value:

select count(sale_number), value from table group by value 

даст:

count(sale_number) | value 
       ------------+-------
        1          |    10
        1          |    11
        1          |    21 
        1          |    30 

Можно ли сгруппировать неточные числа с порогом (скажем, +/- 10%)? Дать желаемый результат:

count(sale_number) | value 
       ------------+-------
        2          |    10
        2          |    11
        1          |    21 
        1          |    30 

1 Ответ

2 голосов
/ 03 октября 2019

Вы можете делать, что хотите, с помощью коррелированного подзапроса:

select t.*,
       (select count(*)
        from t t2
        where t2.value >= t.value * 0.9 and
              t2.value <= t.value * 1.1
       ) as cnt
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...