Опитвате се да преброите дублиращите се записи в таблица с помощта на PL/SQL

Използвам следната заявка:

SELECT Print_NUMBER, 
       COUNT(Print_NUMBER) TotalCount
  FROM LS_Print_Queue
  WHERE event_id = 11862
  GROUP BY PRINT_NUMBER
  HAVING COUNT(PRINT_NUMBER) > 1 
  ORDER BY COUNT(PRINT_NUMBER) DESC

и връща таблица с номера за печат, които са дубликати, и броя на дубликатите за този конкретен номер за печат. Това, което искам да направя, е да обобщя тези данни и просто да осигуря общ брой дубликати. Така че, ако имах 26 реда с 2 дубликати на ред, той ще върне 52 или ако един от тези дублиращи се редове има три дубликата, ще върне 53. Как да постигна това в Oracle PL/SQL?


person Halifernus    schedule 18.07.2014    source източник


Отговори (2)


Можете лесно да го направите с подзаявка:

select sum(TotalCount)
from (SELECT Print_NUMBER, COUNT(Print_NUMBER) as TotalCount
      FROM LS_Print_Queue
      WHERE event_id = 11862
      GROUP BY PRINT_NUMBER
      HAVING COUNT(PRINT_NUMBER) > 1 
     ) t
person Gordon Linoff    schedule 18.07.2014
comment
Благодаря ти. Опитах това няколко пъти, преди да публикувам. Прав си, трябва да работи, но не работеше в Application Express SQL Workshop, предоставен от Oracle. Въпреки това, подкрепен от вашия съвет, създадох страница в приложението и пуснах заявката и готово. Проблемът не беше моята логика, а моят инструмент! Благодаря ти. - person Halifernus; 18.07.2014

С помощта на аналитични функции можете да получите pk/rowid за редовете, които се дублират

http://technology.amis.nl/2011/08/02/remove-duplicate-rows-with-oracle-sql-row_number-intelligent-and-efficient-data-cleansing/

person Scott    schedule 23.07.2014