2013-05-10 164 views
1

我有一些數據似乎沒有正確計算。當我查看原始數據時,我會在給定的列中看到5個不同的值,但是當我運行「Count(Distinct ColA)」時,它會報告4.對於我所分組的所有類別,這也是如此,而不僅僅是一。例如。當有3個,一個第三值報告1當有2等SQL「Count(Distinct ...)」比實際數據顯示的返回值小1?

表A中列中的第二值報告2:ID,類型

表B:ID_FK,WorkID,日期

這裏是我的查詢彙總:

SELECT COUNT (DISTINCT B.ID_FK), A.Type 
FROM A INNER JOIN B ON B.ID_FK = A.ID 
WHERE Date > 5/1/2013 and Date < 5/2/2013 
GROUP BY Type 
ORDER BY Type 

和結果的一個片段:

4|Business 
2|Design 
2|Developer 

以下是我的數據樣本,未彙總。管道是分離器;我只是刪除了「個性化......」和「GROUP BY ...」查詢的部分上面得到這個:

4507|Business 
4515|Business 
7882|Business 
7889|Business 
7889|Business 
8004|Business 
4761|Design 
5594|Design 
5594|Design 
5594|Design 
7736|Design 
7736|Design 
7736|Design 
3132|Developer 
3132|Developer 
3132|Developer 
4826|Developer 
5403|Developer 

正如你可以從數據看,企業應該是5,而不是4,至少這是我的眼睛告訴我的。 :)

我正在使用它的內部ExecuteSQL調用在FileMaker 12解決方案中運行此操作。不過,不要太擔心:代碼應該和其他幾乎相同。 :)

任何幫助,將不勝感激。

感謝, Ĵ

+0

只是爲了排除顯而易見的......你也包括你的該非彙總數據集中的where子句...正確嗎? – 2013-05-10 23:36:02

+0

我會嘗試刪除'distinct'並在兩列上使用'group by',而不是'按類型,B.ID_FK'分組,以查看是否有任何差異。 – Rots 2013-05-10 23:45:36

+1

這個產品是否翻譯過「Date> 5/1/2013」​​?我認爲你應該使'日期>'5/1/2013''或甚至更好'日期>'2013-01-05''。 – 2013-05-11 00:11:18

回答

1

嘗試使用子查詢:

SELECT COUNT(*), Type 
FROM (SELECT DISTINCT B.ID_FK, A.Type Type 
     FROM A 
     INNER JOIN B ON B.ID_FK = A.ID 
     WHERE Date > 5/1/2013 and Date < 5/2/2013) x 
GROUP BY Type 
ORDER BY Type 
+0

我會盡快給你一個嘗試... – Cronk 2013-05-11 16:04:48

1

這可能是一個問題的FileMaker,你見過上的FileMaker論壇this post?它描述了與2012年3月11V3插入的相同問題(計數明顯小於1),然後在2012年11月使用ExecuteSQL與012v相同。這兩種情況似乎都沒有解決。

如果在連接表上存在任何參照完整性約束,或者如果您可以獲得查詢執行計劃,則可能會發現其執行查詢的方式與預期不同。不確定FileMaker是否可以做到這一點。

我喜歡Barmar的建議,它會排序兩次。

如果你正在處理一個錯誤,指揮COUNT DISTINCT,加入和/或一組通過構造查詢,使它們發生在不同的時間可能會解決它:

SELECT COUNT (DISTINCT x.ID), x.Type 
FROM (SELECT A.ID ID, A.Type Type 
     FROM A 
     INNER JOIN B ON B.ID_FK = A.ID 
     WHERE B.Date > 5/1/2013 and B.Date < 5/2/2013) x 
GROUP BY Type 
ORDER BY Type 

您也可以嘗試用A.ID代替B.ID_FK,誰知道它適用的上下文,如: SELECT COUNT(DISTINCT A.ID),A.Type

+0

不,我沒看過那篇文章。我會去調查一下,還有你的其他評論。感謝回覆! – Cronk 2013-05-11 16:04:28