2017-12-18 36 views
0

+---+---+ 
| x | y | 
+---+---+ 
| 1 | 2 | 
| 1 | 5 | 
| 5 | 2 | 
| 5 | 1 | 
+---+---+ 

나는 다음과 같은 결과

에 대한 SQL 쿼리를 갖고 싶어 테이블이라고 테이블 아래
+----+-------------+ 
| id | count_total | 
+----+-------------+ 
| 1 |   3 | 
| 2 |   2 | 
| 5 |   3 | 
+----+-------------+ 

참고 : 나는 별도로 계산 할 수 있었다 id 당 행 수 있지만 동일한 ID에 대한 합계를 얻을 수 없습니다. 그래서 하나의 쿼리에서 아래의 쿼리를 합치거나 합치고 싶습니다.

SELECT x, count(*) as total_x FROM table GROUP BY x 
SELECT y, count(*) as total_y FROM table GROUP BY y 

답변

1

보십시오

SELECT 
A.ID, SUM(A.COUNTS) AS COUNT_TOTAL 
FROM 
(
SELECT X AS ID, COUNT(*) AS COUNTS FROM TABLE1 GROUP BY X 
UNION ALL 
SELECT Y AS ID, COUNT(*) AS COUNTS FROM TABLE1 GROUP BY Y 
) A 
GROUP BY A.ID 
ORDER BY A.ID; 
0

union을 함께 사용하면 실제로 시도하지 않았지만 제대로 작동합니다. 작동하지 않으면 의견을 남기십시오. 기꺼이 도와 주시면 답변을 편집 해 드리겠습니다.

select u.x, sum(u.total) 
from 
(
(SELECT x as x, count(*) as total FROM table GROUP BY x) 
union all 
(SELECT y as x, count(*) as total FROM table GROUP BY y) 
) as u 
group by u.x 
0

선언 @Table 테이블 (INT 의 X, Y의 INT ) @Table 선택 1,2- 조합 전부 선택 1,5- 조합으로 삽입 select 5,2 union 모두 select 5,1 select x, SUM (a) from ( ) 선택 x, COUNT ()에서 @ 테이블 Y 에 의해 @table 그룹에서 모든 선택 Y, COUNT () × 조합에 의해 그룹) ×

0

에 의해 그룹은 아마 가장 쉬운 방법은 모든 X를 선택하고 모든 Y 및 이상 집계 그들.

select id, count(*) as count_total 
from (select x as id from mytable union all select y from mytable) ids 
group by id 
order by id;