簡體   English   中英

如何刪除唯一行和KEEP重復項? 的SQL

[英]How to remove unique rows and KEEP duplicates? SQL

我正在嘗試運行一個自定義sql查詢,以僅選擇數據集中的重復行,不包括唯一結果。

我試圖僅顯示每個項目的重復行,即,如果對於一個項目(汽車),用戶兩次添加了一個產品(窗口)。 盡管窗口可能包含在許多其他項目(房屋,建築物等)中,但條件是項目內的重復,而不是整個數據集。

有可能為此編寫查詢嗎?

更新: 重復項

如下圖所示,項目(id)500和505中包含重復的部分(窗口和引擎蓋),所以我想顯示的只是包含重復項的項目(id)的結果。 因此,最終視圖將沒有項目501、502、503、504、506。重復的項目將僅顯示包含重復字段的行,即項目500(id)將僅顯示行100(作用域),而項目500(id)將僅顯示行100(作用域)。 108,並刪除唯一的101、102和114。 如下所示,部分OC01(以紅色突出顯示)也可以在其他項目(id)上顯示,但是不應顯示項目503,因為OC01在該ID中沒有重復。

數據包含在一個excel文件中,然后由一個名為Tableau的BI軟件對其進行操作,該軟件可讓我編寫自定義sql以不同方式從xls提取數據。

您可以使用窗口/分析功能輕松完成此操作:

select t.*
from (select t.*, count(*) over (partition by project, product) as cnt
      from table t
     ) t
where cnt > 1;

大多數數據庫都支持這些功能。 如果它們不可用,則可以使用相關子查詢或通過group by查詢加入來進行邏輯處理。

編輯:

我不知道Tableau是否支持上述查詢。 您可以嘗試以下方法:

select t.*
from table t1
where 1 < (select count(*)
           from table t2
           where t2.project = t.project and t2.product = t.product
          );

也許這個版本可以工作:

select t.*
from table t join
     (select project, product, count(*) as cnt
      from table t
      group by project, product
     ) pp
     on t.project = pp.project and t.product = pp.product and cnt > 1;
SELECT * FROM TABLE1 
WHERE project 
IN (SELECT X.project FROM (
    SELECT project, product,COUNT(product)
    FROM TABLE1
    GROUP BY project,product
    HAVING COUNT(product) > 1)X)
AND product IN (SELECT X.product FROM (
    SELECT project, product,COUNT(product)
    FROM TABLE1
    GROUP BY project,product
    HAVING COUNT(product) > 1)X)

如果您的DBMS不支持Gordon Linoff解決方案使用的窗口聚合函數,則可以執行以下操作:

select t1.*
from table t1
join
  (select project, product
   from table
   group by project, product
   having count(*) > 1
  ) t2
on t1.project = t2.project
and t1.product = t2.Product;

根據更新的查詢進行編輯:

SELECT *
FROM tab t1
WHERE EXISTS
 (
   SELECT * FROM tab t2
   WHERE t1.id = t2.id
     AND t1.part = t2.part
     AND t1.scope <> t2.scope
 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM