2014-01-16 3 views
2

Я ищу способ подсчитать, сколько результатов были опущены мой SQL-запрос (я работаю с Sqlite):SQL - Подсчитайте количество пропущенных

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

Этот запрос возвращал меня 121 id (из 50 000), было бы неплохо узнать, сколько id было опущено для каждой пары (x, y).

Возможно ли это?

Спасибо за вашу помощь,

EDIT:

образец:

+--+-----+----+-------------+ 
|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 | 
+--+ 

Потому что: идентификатор 4 и ид 6 имеют те же х, у, адрес электронной почты, чем идентификатором 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' вы получите undefined) – RandomSeed

+0

Я буду использовать его только один раз для одного запроса. Спасибо большое – Postnop

1

Вы можете попробовать это:

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

Это показывает все записи минус те, которые вы выбрали. Надеюсь это поможет.

0

Вы можете получить подсчет общего размера базы данных и затем вычесть размер результата. В зависимости от того, насколько велика ваша база данных, это также может быть быстрее, чем другие.

Смежные вопросы