2014-01-16 49 views
2

我正在尋找一種方法來計算有多少結果是由我的SQL查詢省去數(我使用SQLite工作):SQL - 伯爵省略的結果的

SELECT id FROM users GROUP BY x, y, email; 

該查詢返回了我(id = 50 000),很高興知道每對(x,y)有多少id被省略。

可能嗎?

感謝您的幫助,

編輯:

樣本:

+--+-----+----+-------------+ 
|ID|x |y |email  | 
+--+-----+----+-------------+ 
|1 |48.86|2.34|[email protected]| 
+--+-----+----+-------------+ 
|2 |48.86|2.34|[email protected]| 
+--+-----+----+-------------+ 
|3 |40.85|2.31|[email protected]| 
+--+-----+----+-------------+ 
|4 |48.86|2.34|[email protected]| 
+--+-----+----+-------------+ 
|5 |40.85|2.31|[email protected]| 
+--+-----+----+-------------+ 
|6 |48.86|2.34|[email protected]| 
+--+-----+----+-------------+ 

查詢:

SELECT id FROM users GROUP BY x, y, email; 

結果:

+--+ 
|id| 
+--+ 
|1 | 
+--+ 
|2 | 
+--+ 
|3 | 
+--+ 

因爲:ID 4和id 6具有相同的X,Y,電子郵件ID比2和5比3

一樣,我需要以最快的方式瞭解:

id 1 -> 0 omitted 
id 2 -> 2 omitted (id 4 and id 6 had same x, y, email) 
id 3 -> 1 omitted (id 3) 
+0

請提供樣本數據和預期結果。 –

+0

沒有,我希望我的說明是正確的,我對技術英語不太熟悉.. – Postnop

回答

3
SELECT id, COUNT(*) -1 AS omitted FROM users GROUP BY x, y, email; 

......假設你實際上想知道每個元組(x, y, email)有多少被省略。

+0

注意:雖然它「有效」,但是'SELECT'列表指的是非聚集列GROUP BY子句。 (因爲實際的'id'你會得到的是未定義的) – RandomSeed

+0

我會使用它,只有一次查詢。非常感謝 – Postnop

1

你可以試試這個:

SELECT COUNT(*) 
FROM 
(
SELECT * 
FROM users 
MINUS 
SELECT id 
FROM users 
); 

這說明你的所有記錄減去你選擇的人。希望這可以幫助。

0

您可以計算數據庫的總體大小,然後減去結果大小。取決於數據庫的大小,也可能比其他方式更快。