태그 보관물: group-by

group-by

두 개의 SELECT 문 결과에 참여 작업 수 (있는 경우)

SELECT하나의 명령문 으로 2 개의 SQL 문 결과를 결합 할 수 있습니까? 나는 마감 시간에 각 레코드는 별도의 작업은 작업의 데이터베이스가 (그리고 PALT단지이며, INT시작부터 마감 시간에 일을. Age도이다 INT일수.)

테이블에 각 사람이있는 테이블, 가지고있는 LATE작업 수 및 가지고있는 작업 수 (있는 경우) 를 갖고 싶습니다 .

이 데이터를 별도의 테이블에 쉽게 가져올 수 있습니다.

SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks

다음과 같은 데이터를 반환합니다.

ks        # Tasks
person1   7
person2   3

그리고 나는 가지고있다 :

SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks

다음을 반환합니다.

ks        # Late
person1   1
person2   1

그리고 나는이 두 가지의 결과에 가입 할 select(바이 문 KS)

임시 테이블을 사용하지 않으려 고하지만 이것이 유일한 실용적인 방법이라면 임시 테이블을이 방식으로 사용하는 방법에 대해 더 알고 싶습니다.

또한 count()조건부를 만족시키는 일종의 행을 시도 했지만 그 방법을 알 수 없었습니다. 가능하다면 작동합니다.

부록이 : 미안 해요, 난 내 결과 열을 위해 갖고 싶어 KS, Tasks하고,Late

KS        # Tasks   # Late
person1   7         1
person2   3         1
person3   2         0  (or null)

또한 나는 늦은 과제가 없어도 사람이 나타나기를 원합니다.

SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
이 답변에 감사드립니다!

두 개의 select 문도 작동하며 a LEFT JOIN를 사용 하여 결합해도 작동 하며이 방식으로 여러 selects 를 결합하는 방법을 이해합니다.



답변

SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late]
FROM
    (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1
LEFT JOIN
    (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2
ON (t1.ks = t2.ks);


답변

다음과 같이 해보십시오 :

SELECT
*
FROM
(SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1
INNER JOIN
(SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2
ON t1.ks = t2.ks


답변

사용 UNION:

SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
UNION
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks

또는 UNION ALL중복을 원할 경우 :

SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
UNION ALL
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks


답변

Age와 Palt가 같은 테이블에있는 열이면 모든 작업을 계산하고 (*) 다음과 같이 늦은 작업 만 합할 수 있습니다.

select ks,
       count(*) tasks,
       sum(case when Age > Palt then 1 end) late
  from Table
 group by ks


답변

UNION ALL키워드를 사용할 수 있습니다 .

다음은 T-SQL에서 수행하는 MSDN 문서입니다. http://msdn.microsoft.com/en-us/library/ms180026.aspx

UNION ALL-결과 세트를 결합

UNION- 집합 조합과 같은 작업을 수행하고 중복 값을 출력하지 않습니다

예제와의 차이점 : http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html


답변