Sql-Server

查找與兩個或多個 Col2 值關聯的唯一 FK 的計數

  • January 31, 2022

我正在嘗試找到一種方法來計算與多行中至少兩個不同 Col2 值相關聯的唯一外鍵的計數。例子:

我想為大量數據找到與 Page1 和 Page2 相關的唯一 FK 的計數。對最有效的方法有什麼建議嗎?

編輯:感謝您的回復和跟進。我將嘗試澄清:我需要的查詢的期望結果是 1(與 page1 和 page2 相關聯的 FK 的唯一值的數量)。我要回答的問題本質上是有多少使用者在同一會話中點擊了 page1 並點擊了 page2。每個命中都是PK下唯一的key,是否屬於同一個會話由FK下的key決定。

您可以為此使用視窗函式,不需要自連接。

SELECT *,
 COUNT(*) OVER (PARTITION BY FK)
FROM YourTable;

db<>小提琴

為了提高效率,您需要一個索引FK作為前導鍵列。

嘗試這樣的事情……

SELECT COUNT(DISTINCT FK)
FROM Table
WHERE FK IN (
   SELECT FK
   FROM Table
   GROUP BY FK
   HAVING COUNT(DISTINCT Col2) &gt; 1
)

至於大型表的性能,如果不知道表定義和存在於其上的索引,我無法給出建議。

引用自:https://dba.stackexchange.com/questions/306763