Выберите и посчитайте одновременно в запросе одной таблицы
Я пытаюсь запросить таблицу и получить один столбец результатов, а затем, сколько результатов есть для этого столбца. В настоящее время я должен выполнить два запроса отдельно, например:
SELECT DISTINCT field_a
FROM table_a
WHERE property_a = 1
AND property_b = 2;
SELECT COUNT(DISTINCT field_a)
FROM table_a
WHERE property_a = 1
AND property_b = 2;
Я бы предпочел объединить их, поскольку они выполняют один и тот же запрос, но я не могу понять, как это сделать. Что-то вроде
SELECT COUNT(DISTINCT field_a) AS my_count, DISTINCT field_a AS my_records
FROM table_a...
(Я попробовал GROUP BY, но в нем перечислено, сколько из каждого отдельного результата есть.. дал мне кучу 1. Если бы был способ суммировать их без выполнения цикла в моем сценарии, это также могло бы работать)
3 ответа
Ты пытался:
select field_a, count(*)
from table_a
WHERE property_a = 1 AND property_b = 2
group by field_a
?
Размещение в качестве ответа, как предложено @Bohemian
Вы можете объединить каждый свой отдельный результат с глобальным отличным счетом:
SELECT DISTINCT(field_a) as my_records, b.my_count
FROM table_a,
(
SELECT COUNT(DISTINCT field_a) as my_count FROM table_a
WHERE property_a = 1 AND property_b = 2
) b
WHERE property_a = 1 AND property_b = 2;
Просто:
SELECT DISTINCT
field_a
,COUNT(DISTINCT field_a) OVER ()
FROM table_a
WHERE property_a = 1
AND property_b = 2;