반응형
MYSQL 쿼리: 한 열이 여러 다른 그룹에서 여러 번 발생하고 특정 조건과 일치하는 모든 결과를 가져옵니다.
다음과 같은 데이터가 있다고 가정합니다.
object size color units
------ ---- ----- -----
ball small red 3
ball small red 2
ball medium blue 2
ball medium blue 1
ball big yellow 2
hat big green 3
hat big green 4
umbrella medium blue 1
umbrella medium blue 4
umbrella big blue 4
umbrella huge red 2
umbrella huge green 1
book small white 4
book small brown 3
book medium brown 2
크기 및 색상에 대한 변동의 총 단위 중 적어도 하나가 5인 모든 객체에 대해 모든 객체 색상 크기 변동을 반환하는 쿼리가 필요합니다. 그러면 쿼리는 다음 행을 반환합니다.
object size color total_units
------ ---- ----- ------
ball small red 5
ball medium blue 3
ball big yellow 2
umbrella medium blue 5
umbrella big blue 4
umbrella huge red 2
umbrella huge green 1
모든 공과 크기-색상 변화당 합계가 결과에 나타나는 이유는 두 개 이상의 서로 다른 공이 있고 그 중 하나 이상의 총 단위가 5개 이상이기 때문입니다.
모든 우산 및 크기-색상의 변화당 합계가 결과에 표시되는 이유는 적어도 두 개의 다른 우산이 있고 그 중 하나 이상의 총 단위가 5개 이상이기 때문입니다.
모자가 결과에 나타나지 않는 이유는 빅 그린 모자가 5개 이상 있더라도 최소 2개의 다른 모자가 존재하지 않기 때문입니다.
그 결과물이 하나도 나오지 않는 이유는 세 권의 책이 있는데도 적어도 다섯 권의 책이 없기 때문입니다.
어떻게 해야 하는지 알려주셔서 감사합니다!
창 기능(MySQL 및 MariaDB 데이터베이스의 최신 버전)을 사용하면 다음과 같이 간단합니다.
select object, size, color, total_units
from (select object, size, color, sum(units) as total_units,
max(sum(units)) over (partition by object) as max_total_units,
count(*) over (partition by object) as cnt
from t
group by object, size, color
) t
where max_total_units >= 5 and cnt > 1;
- 파생 테이블에서 고유한 항목을 식별할 수 있습니다.
Object
둘 이상의 조합이 있는 값 및 조합 중 하나가 총 5개 이상의 단위를 가집니다. - 메인 테이블로 돌아가 해당 행만 가져옵니다(포스트).
GROUP BY
).
쿼리
SELECT
t.object, t.size, t.color, SUM(t.units) AS total_units
FROM
your_table AS t
JOIN
(
SELECT dt.object
FROM
(
SELECT
object, size, color, SUM(units) AS total_units
FROM your_table
GROUP BY
object, size, color
) AS dt
GROUP BY dt.object
HAVING COUNT(*) > 1 AND
SUM(dt.total_units >= 5) /* atleast one with 5 units */
) AS dt2
ON dt2.object = t.object
GROUP BY t.object, t.size, t.color;
결과
| object | size | color | total_units |
| -------- | ------ | ------ | ----------- |
| ball | big | yellow | 2 |
| ball | medium | blue | 3 |
| ball | small | red | 5 |
| umbrella | big | blue | 4 |
| umbrella | huge | green | 1 |
| umbrella | huge | red | 2 |
| umbrella | medium | blue | 5 |
언급URL : https://stackoverflow.com/questions/53692975/mysql-query-to-get-all-results-where-one-column-happens-more-than-once-in-differ
반응형
'programing' 카테고리의 다른 글
NumPy 어레이는 JSON을 직렬화할 수 없습니다. (0) | 2022.09.19 |
---|---|
MySQL, NULL 또는 빈 문자열을 삽입하시겠습니까? (0) | 2022.09.06 |
numpy 배열에서 특정 요소를 제거하는 방법 (0) | 2022.09.06 |
PHP를 사용하여 HTTP에서 HTTPS로 리디렉션 (0) | 2022.09.06 |
MySQL IFNULL 기타 (0) | 2022.09.05 |