SQL - 计算省略结果的数量

时间:2014-01-16 12:48:04

标签: sql sqlite count

我正在寻找一种方法来计算我的sql查询省略了多少结果(我正在使用Sqlite):

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

这个查询返回121 id(50 000),很高兴知道每对(x,y)省略了多少id。

有可能吗?

感谢您的帮助,

编辑:

示例:

+--+-----+----+-------------+
|ID|x    |y   |email        |
+--+-----+----+-------------+
|1 |48.86|2.34|john@test.com|
+--+-----+----+-------------+
|2 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+
|3 |40.85|2.31|john@test.com|
+--+-----+----+-------------+
|4 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+
|5 |40.85|2.31|john@test.com|
+--+-----+----+-------------+
|6 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+

查询:

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)

3 个答案:

答案 0 :(得分:3)

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

...假设您确实想要“知道每个元组(x, y, email)已省略了多少。

答案 1 :(得分:1)

你可以试试这个:

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

这会显示所有记录减去您选择的记录。希望这会有所帮助。

答案 2 :(得分:0)

您可以计算数据库的总大小,然后减去结果大小。根据您的数据库的大小,也可能比其他方式更快。<​​/ p>

相关问题