Как найти уникальные дубликаты в SQL

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

Table 1 
Id  name  Amount(in and out)  Day
1   ram   100                 Sunday
2   ram  -100                 Sunday
3   ram   100                 Monday
4   ram  -100                 Monday
5   ram   100                 Wednesday
6   ram   100                 Wednesday

Ram получил 100 от компании в воскресенье т. е. id =1 и сумма = 100 ,в тот же день он вернул деньги компании т. е. id = 2, сумма = -100

similay для id = 3 и id = 4

но id = 5 и 6 являются дубликатами, так как сумма не обращена, и это произошло в тот же день .

я хочу показать

Count  name  Amount
2        ram  100

Count — количество повторяющихся значений .

я пробовал много логики, но бесполезно .пожалуйста, помогите мне. спасибо

Примечание: Дублированный означает два последовательных положительных / отрицательных значения для любого дня .

1 ответ

  1. Вы можете попробовать ниже запроса (предполагая имя таблицы как tbl):

    Логика: если он обращен, то у него будет одно положительное и одно отрицательное значение в вашем случае 100 и -100, поэтому сумма их будет равна нулю, поэтому в предложении having мы их игнорируем .

    select count(Id),name,amount from tbl group by name,day,amount  having count(id)>1  and sum(amount)>0