반응형
단일 출력으로 결합하려는 두 개의 쿼리가 있는데, 열 수가 다르기 때문에 UNIOn을 사용할 수 없습니다.
테이블은 id
refid
cellid
cat
필드가있는 ref
이며 모두 전체를 포함합니다. 번호
쿼리 1 : 각 고유 한 cellid
에 대한 총 행 수를 찾습니다.
SELECT cellid, COUNT(*) totalcount, cat FROM rel GROUP BY cellid
쿼리 2 : 각 고유 한 cellid
에 대해 cat
의 모드 (가장 일반적인 값)를 찾습니다.
SELECT cellid, cat
FROM rel t
GROUP BY cellid, cat
HAVING cat = (
SELECT cat
FROM rel
WHERE cellid = t.cellid
GROUP BY cat
ORDER BY COUNT(*) DESC, cat
LIMIT 1
)
내가하려는 작업의 예를 제공하기 위해 내 테이블을 쿼리하고 싶습니다.
id | refid | cellid | cat
1 | 1 | 1 | 1
2 | 2 | 2 | 2
3 | 3 | 3 | 4
4 | 1 | 1 | 2
5 | 2 | 1 | 2
6 | 3 | 1 | 3
7 | 1 | 2 | 2
8 | 1 | 1 | 2
그리고 반환
cellid | no_of_rows | Mode_of_cat
1 | 5 | 2
2 | 2 | 2
3 | 1 | 4
해결 방법
여기서 가장 쉬운 해결책은 이미 가지고있는 두 개의 결과 집합을 결합하는 쿼리를 작성하는 것입니다. 쿼리 결과를 임시 테이블에 저장하고 다음과 같이 임시 테이블을 조인 할 수 있습니다.
SELECT tmp1.cellid, tmp1.rows, tmp2.mode_cat FROM
(
SELECT cellid, COUNT(*) AS rows
FROM rel
GROUP BY cellid
)tmp1
LEFT JOIN
(
SELECT cellid, cat AS mode_cat
FROM rel t
GROUP BY cellid, cat
HAVING cat = (
SELECT cat
FROM rel
WHERE cellid = t.cellid
GROUP BY cat
ORDER BY COUNT(*) DESC, cat
LIMIT 1
)
)tmp2
ON tmp1.cellid = tmp2.cellid;
참조 페이지 https://stackoverflow.com/questions/13053521
반응형
'MySql' 카테고리의 다른 글
MySQL Windows 7에서 mysql 서버를 다시 시작하십시오. (0) | 2021.01.23 |
---|---|
MySQL에 화폐 가치를 저장하는 최고의 데이터 유형 (0) | 2021.01.23 |
MySQL 오류 : pdo_mysql을 설치하는 동안 php_pdo_driver.h를 찾을 수 없습니다. (0) | 2021.01.23 |
MySQL 데이터베이스의 JSON 대 직렬화 배열 (0) | 2021.01.23 |
MySQL에서 중첩 된 트랜잭션이 허용됩니까? (0) | 2021.01.23 |
댓글