프로그래밍

SQL 좀 잘한다 손!

HIT_INFO
id hit
1 50
2 30
3 100
4 10
5 0

 

이런 데이터를


hit가 0개인 갯수
hit가 0개 초과 50개 미만인 갯수
hit가 50개 이상 100개 미만인 갯수
hit가 100개 이상인 갯수

 

이런식으로 나눠서 뽑으려고 하는데요

 

데이터도 0, 0up, 50up, 100up 으로 바꿔야해요

 

결론적으로 
0           1
0up        2
50up      1
100up     1

이렇게 나와야하는데

 

SELECT
    CASE
        WHEN hit IS NULL THEN '0'
        WHEN hit >= 1 AND hit < 50 THEN '0up'
        WHEN hit >= 50 AND hit < 100 THEN '100up'
        ELSE '100up'
    END AS 'HIT_RANGE',
    COUNT(*) AS 'ID_COUNT'
FROM HIT_INFO
GROUP BY 'HIT_RANGE';

 

이거 돌리면 자꾸 row가 하나만 나오는데

 

뭐가 문제인지 아시는분?

MY SQL 입니다

19개의 댓글

2023.09.19

아 머리야 count(*)해서 전체 다 더한 값 하나가 나오는거 아님?

0
2023.09.19
@존버승리

그런것 같긴한데... 개별로 카운팅하려면 어떡해야할까요

* 대신 id 넣어도 똑같이 row 하나만 나오네요

0
2023.09.19

```

SELECT

CASE

WHEN hit = 0 THEN '0'

WHEN hit >= 1 AND hit < 50 THEN '0up'

WHEN hit >= 50 AND hit < 100 THEN '50up'

ELSE '100up'

END AS HIT_RANGE,

COUNT(*) AS ID_COUNT

FROM HIT_INFO

GROUP BY HIT_RANGE;

```

1. `HIT_RANGE` 따옴표 뺌

2. 50up이 없어서 추가함

결과값 예시)

```

HIT_RANGE ID_COUNT

0 1

0up 2

50up 1

100up 1

```

0
2023.09.19
@뇨끼먹은토끼

감사합니다!!

않이... 따옴표때문에 그렇다고...!?!?

이유가 뭘까요

0
2023.09.19
@에더리

따옴표 넣으면 'HIT_RANGE'라는 개별 문자열로 취급하기 때문

0
2023.09.19

코테면 모르겠는데 개발인 경우, 웬만하면 그냥 통으로 백단으로 들고온 후 거기서 가공하는게 좋슴니다...

0
2023.09.19
@코노딩예

왜용? 백엔드는 확장이 더 용이해서그런가 ?

0
2023.09.19
@ㄹㅇㄹ3

디비자원은 비싼데 서버자원은 쌈

0
2023.09.19
@ㄹㅇㄹ3

디비는 조회만!

데이터 가공 및 연산은 백단에서!

 

이렇게 해야 오랜 기간 깔끔하게 운영할 수 있음

 

데이터 가공 및 연산을 디비에서 하게되면 자원 문제도 있는데, 어떤 예외상황이 터질 지 모름.

비숙련 개발자의 코드로 락을 계속 잡고있을수도있고, 씨퓨나 메모리를 많이 먹어서 최악의 경우 디비가 행걸리거나 아예 죽어버리면 운영 자체를 못함.

 

실제 데이터가 들어있는 디비는 딱 crud만 해주는게 운영적인 관점에서 안정적으로 오래 끌고갈 수 있음

1
2023.09.19
@코노딩예

이거 추천 DB는 조회만 하거 대량 연산 필요하먄 덤프 떠서 하는게 편함

0
2023.09.19
@코노딩예

나는 쿼리 한방에 쭉 뽑아서 화면에 바로 뿌리는걸 선호하는데 이게 더 별로인거네

0
2023.09.19
@멍멍이

한방쿼리는 지양해야해~

0
2023.09.19
@코노딩예

한방쿼리.. 못참아..

 

동양의학을 무시하지마라..

0
2023.09.19
@멍멍이
0
2023.09.19
@코노딩예

대량연산 시간 생각하면

코딩보다 쿼리에서 거르는게 훨씬 빠를텐데?

1
2023.09.19
@잠금압박

그런식으로 생각하면 문제가 생길 포인트가 너무 많아짐.

 

단순 성능만 생각하면 안돼.

안정적으로 운영해야지

0
2023.09.19
@코노딩예

개인공부입니다 감사합니다

0
2023.09.19

누적되면 코스트 많이 들거 같은 연산이구만

다른 대안방안 생각해봐야함

0
2023.09.19
@룰루루룽룽

개인공부입니다 감사합니다.

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5709 [프로그래밍] 패스트 캠퍼스 <---- 얘내는 가격 인상 원툴임? 5 조강현 0 1 일 전 246
5708 [프로그래밍] 클라가 파이썬 셀레니움같은거 써서 클릭하고 그러는걸 감지 ... 5 리옴므 0 2 일 전 188
5707 [프로그래밍] leetcode 50일 달성 1 JimmyMcGill 1 2 일 전 162
5706 [프로그래밍] 그냥 개인공부용 git 만들건데 5 년째재수강 0 2 일 전 250
5705 [프로그래밍] html 자바스크립트 질문 19 책걸이 0 3 일 전 295
5704 [프로그래밍] 아니 시바 이게 무슨일이야 4 인간지표 0 4 일 전 310
5703 [프로그래밍] 아두이노 키트 아무것도 모르고 사도 될까? 6 그것 0 4 일 전 256
5702 [프로그래밍] 횽들 Vimeo에 올라가있는 동영상의 원본크기를 확인할 수 있... 13 카뜨만두 0 4 일 전 183
5701 [프로그래밍] c# 이벤트와 델리게이트 13 RX7900XTX 0 7 일 전 304
5700 [프로그래밍] Aws 람다에 파이썬 올려서 결과 받아오는데 11 아르피쥐 0 8 일 전 343
5699 [프로그래밍] 마리아DB mediumtext 그냥 쓰고 싶은데 21 잉텔 0 9 일 전 220
5698 [프로그래밍] 안드로이드 씹뉴비 질문이요 2 집에가게해줘 0 9 일 전 125
5697 [프로그래밍] c언어 7년했는데 이런게 되는거 처음알았음.. 4 케로로중사 0 10 일 전 891
5696 [프로그래밍] 파이썬 1도 모르는데 GPT로 프로그램 뚝딱 만듬 2 푸르딩딩 1 13 일 전 743
5695 [프로그래밍] 담주 면접잡혔는데 8 삐라루꾸 0 14 일 전 501
5694 [프로그래밍] 아두이노 부트로더를 구웠는데.. 4 렙이말한다ㅡ니가옳다 0 14 일 전 233
5693 [프로그래밍] IOS 개발자 있나여? 1 g4eng 0 17 일 전 260
5692 [프로그래밍] 시스템 디자인 인터뷰 준비 도움좀!!! 1 Nognhyup 0 17 일 전 202
5691 [프로그래밍] 최근에 vscode 쓴 사람 도움! 3 172102 0 18 일 전 523
5690 [프로그래밍] 책을 또 사버리고 말았다... 1 찰나생멸 2 19 일 전 524