Выберите и посчитайте одновременно в запросе одной таблицы

Я пытаюсь запросить таблицу и получить один столбец результатов, а затем, сколько результатов есть для этого столбца. В настоящее время я должен выполнить два запроса отдельно, например:

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;
Другие вопросы по тегам