Запрос SQL Server - выбор COUNT (*) с помощью DISTINCT

В SQL Server 2005 у меня есть таблица cm_production, которая перечисляет весь код, который был введен в производство. В таблице есть имя_билета, program_type и имя_программы и push_number вместе с некоторыми другими столбцами.

ЦЕЛЬ: подсчитайте все имена программ DISTINCT по типу программы и нажмите номер

Что я до сих пор:

SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE push_number=@push_number 
GROUP BY program_type

Это дает мне часть, но он подсчитывает все имена программ, а не отдельные (которые я не ожидаю, что это будет делать в этом запросе). Наверное, я просто не могу окутать голову, чтобы сказать, что он считает только отдельные имена программ, не выбирая их. Или что-то.

265
05 окт. '09 в 21:19
источник поделиться
7 ответов

Подсчитайте все имена программ DISTINCT по типу программы и нажмите номер

SELECT COUNT(DISTINCT program_name) AS Count,
  program_type AS [Type] 
FROM cm_production 
WHERE push_number=@push_number 
GROUP BY program_type

DISTINCT COUNT (*) вернет строку для каждого уникального счета. Вы хотите COUNT (выражение DISTINCT): оценивает выражение для каждой строки в группе и возвращает количество уникальных значений nonnull.

445
05 окт. '09 в 21:26
источник

Связанные вопросы


Похожие вопросы

Мне нужно было получить количество вхождений каждого отдельного значения. Столбец содержит информацию о регионе. Простым SQL-запросом, в котором я оказался, был:

SELECT Region, count(*)
FROM item
WHERE Region is not null
GROUP BY Region

Который дал бы мне список вроде, скажем:

Region, count
Denmark, 4
Sweden, 1
USA, 10
57
12 авг. '14 в 22:03
источник

Вам нужно создать временную таблицу для отдельных столбцов, а затем запросить счет из этой таблицы

SELECT COUNT(*) 
FROM (SELECT DISTINCT column1,column2
      FROM  tablename  
      WHERE condition ) as dt

здесь dt - это временная таблица

13
30 апр. '15 в 10:09
источник

попробуйте следующее:

SELECT
    COUNT(program_name) AS [Count],program_type AS [Type]
    FROM (SELECT DISTINCT program_name,program_type
              FROM cm_production 
              WHERE push_number=@push_number
         ) dt
    GROUP BY program_type
12
05 окт. '09 в 21:25
источник
SELECT COUNT(DISTINCT program_name) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE push_number=@push_number 
GROUP BY program_type
10
05 окт. '09 в 21:27
источник

Это хороший пример, где вы хотите получить счет Pincode, который хранится в последнем поле адреса

SELECT DISTINCT
    RIGHT (address, 6),
    count(*) AS count
FROM
    datafile
WHERE
    address IS NOT NULL
GROUP BY
    RIGHT (address, 6)
-1
24 июня '16 в 8:59
источник
select  count (distinct NumTar),'PROPIAS'
from ATM_TRANe with (nolock)
where Fecha>='2014-01-01'
  AND Fecha<='2015-05-31'and NetDestino=0
  and SystemCodResp=0
group by NetDestino 
union 
select sum (contar),'FORANEAS'
from  
(
  select  count(distinct NumTar) as contar
  from ATM_TRANe with (nolock)
  where Fecha>='2014-01-01'
    AND Fecha<='2014-01-31'
    and NetDestino!=0
    and SystemCodResp=0
  group by NetDestino
)dt
-5
20 мая '15 в 2:24
источник

Посмотрите другие вопросы по меткам или Задайте вопрос