[sql] SQL Server 쿼리-DISTINCT를 사용하여 COUNT (*) 선택
SQL Server 2005에는 프로덕션에 넣은 모든 코드를 나열하는 cm_production 테이블이 있습니다. 테이블에는 ticket_number, program_type 및 program_name 및 push_number가 다른 열과 함께 있습니다.
목표 : 모든 DISTINCT 프로그램 이름을 프로그램 유형 및 푸시 번호로 계산
내가 지금까지 가지고있는 것은 :
DECLARE @push_number INT;
SET @push_number = [HERE_ADD_NUMBER];
SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type]
FROM cm_production
WHERE push_number=@push_number
GROUP BY program_type
이것은 저를 거기에 데려다 주지만 별개의 이름이 아닌 모든 프로그램 이름을 세는 것입니다 (이 쿼리에서 예상하지는 않습니다). 별개의 프로그램 이름을 선택하지 않고 계산하는 방법을 내 머리에 감쌀 수는 없습니다. 또는 뭔가.
답변
모든 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 <expression>)
: 그룹의 각 행에 대한 표현식을 평가하고 널이 아닌 고유 한 값의 수를 리턴합니다.
답변
각 고유 값의 발생 횟수를 가져와야했습니다. 열에 지역 정보가 포함되었습니다. 내가 끝내었던 간단한 SQL 쿼리는 다음과 같습니다.
SELECT Region, count(*)
FROM item
WHERE Region is not null
GROUP BY Region
나에게 다음과 같은 목록을 줄 것입니다.
Region, count
Denmark, 4
Sweden, 1
USA, 10
답변
고유 한 열에 대한 파생 테이블을 생성 한 다음 해당 테이블에서 카운트를 쿼리해야합니다.
SELECT COUNT(*)
FROM (SELECT DISTINCT column1,column2
FROM tablename
WHERE condition ) as dt
여기 dt
은 파생 테이블입니다.
답변
SELECT COUNT(DISTINCT program_name) AS Count, program_type AS [Type]
FROM cm_production
WHERE push_number=@push_number
GROUP BY program_type
답변
이 시도:
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
답변
이것은 마지막 주소 필드에 저장된 핀 코드 수를 얻으려는 좋은 예입니다.
SELECT DISTINCT
RIGHT (address, 6),
count(*) AS count
FROM
datafile
WHERE
address IS NOT NULL
GROUP BY
RIGHT (address, 6)
답변
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