일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- spring
- expo
- 시놀로지
- string
- 스프링
- mysql
- 앱
- sdk
- sts
- 자바스크립트
- 로또
- 시큐리티
- Admob
- DB
- yml
- 배포
- react
- 이클립스
- EAS
- springboot
- YAML
- Native
- Java
- Android
- Navigation
- thymeleaf
- sqlite
- 안드로이드
- sql
- 폰트
- Today
- Total
Dev JS Blog
[Mysql] 데이터 한 로우로 그룹핑 본문
현재 A,B,C,D 로 4개의 데이터가 들어있는 테이블이 있다.
여기서 A,B,C,D 이렇게 한 로우로 합쳐서 보고싶으면 어떻게 해야할까..?
mysql 에서는 GROUP_CONCAT 이라는 함수를 제공한다.
SELECT GROUP_CONCAT (원하는컬럼) 을 해주면 된다.
근데 여기서 ,(콤마)가 아닌걸로 바꾸고 싶다면
separator 를 하고 원하는 구분자를 해주면 된다.
근데 여기서 주의 해야할 점이 있다.
만약 데이터가 이럴때 그냥 GROUP_CONCAT을 하게되면 어떻게 될까..?
A/B/C/D 는 구분자로 나오게 되었지만 CLASS는 그냥 제일 처음 로우의 데이터를 보여주게된다.
여기서 이제 내가 하려는 말이 뭔지 안다면 SQL에 대한 감이 있는 사람으로 느껴진다.
MYSQL 은 지금까지 써본결과
개인적으로 그룹핑하는거에 관대한 SQL 이다
다른 대표적은 Oracle 이나 MSSQL 에서는 SELECT 할 컬럼에 대해서
GROUP BY를 할경우 무조건 GROUP BY에 들어가줘야 쿼리문이 성립이 된다.
하지만 MYSQL 은
쿼리를 이렇게 짜더라도
에러하나 없이 쿼리가 잘 나온다.
그래서 MYSQL은 GROUP 쿼리를 짤때 그룹이 잘되었는지 확인을 잘해보는 습관이 필요하다.
저 쿼리문도
SELECT col, class FROM test_table group by col, class 로 해야한다던가
group by 에 안넣게 된다면
SELECT col, SUM(class) FROM test_table group by col
sum, max, count 등등 이런 집계함수를 이용해주어야 그룹의 기준점에 맞춰서
데이터가 조회되는데 MYSQL은 그냥 에러없이 그냥 나오기때문에
내가 생각한 group by 가 잘 되었는지 확인 해야한다.
다시 위에 얘기로 돌아가서
CLASS 별로 GROUP_CONCAT을 하고 싶다면
class를 group by 를 준다면
class 별로 그룹이 되는 쿼리가 된다.
'옛날 창고 > SQL' 카테고리의 다른 글
[MySQL] Mysql Merge into (0) | 2020.12.30 |
---|---|
[MySQL] Mysql 날짜 포맷 (0) | 2020.12.30 |
[MYSQL] 통계쿼리 with rollup (1) | 2020.05.15 |
SQLITE 설치하기~ (0) | 2020.05.13 |
[ORACLE] 여러 행 데이터 한 행에 (0) | 2019.04.11 |