동행
97
2020-06-09 13:55:37 작성 2020-06-09 13:55:52 수정됨
6
253

공부중에 mysql 질문드립니다.


select cnt, title, date, image, refer from view where ymd between ? and ? and category = ? and media = ? order by cnt desc


현재 이렇게 해서 1가지의 media 만으로  cnt 값 정렬로 뽑아내고있는데요

1가지 미디어 값을 추가 하여 미디어 a 미디어 b 각각의 cnt 값을 합 한 후 그값으로 정렬로 select 하고 싶은데 어떻게 해야될까요?


합친다는 개념이 들어가니깐 헷갈리네요

0
  • 답변 6

  • 드코
    3k
    2020-06-09 14:08:31 작성 2020-06-09 14:08:45 수정됨

    select media ,sum(cnt) as cnt

    from view

    where 1=1

    group by media

    having media='a미디어' or 'b미디어'

    order by media asc, cnt desc

  • 동행
    97
    2020-06-09 14:36:02

    우선 매우 감사합니다.



    where 1=1 은 무슨 뜻인가요?

  • 드코
    3k
    2020-06-09 14:38:00 작성 2020-06-09 14:38:55 수정됨

    아무런 의미는 없습니다. 그저 true 이고


    where 1=1  해놓으면

    and ~~

    and ~~


    조건절 사용 시 and구문만 붙히면 되니 편해서 사용합니다.

  • 동행
    97
    2020-06-09 14:43:20
    감사합니다. 추가로 저렇게 하면 a미디어 b미디어 순서로  나오는 걸로 알고있는데, 하나로 새로운 필드로 만들수도 있나요?  예를 들어 c미디어 입니다.
  • 드코
    3k
    2020-06-09 14:46:14

    저렇게 하면 결과가



    mediacnt
    a미디어22
    b미디어11

    이렇게 나오는데


    mediacnt
    a미디어22
    b미디어11
    c미디어1

    이렇게 나오는걸 원하시는건가요

  • 동행
    97
    2020-06-09 14:59:32


    titledatecntmedia
    테스트1110a
    테스트1
    120b
    테스트2
    310b
    테스트2
    310a

    이런 상황이였으면 기존에는 미디어 a 값을 기준으로 

    테스트 1 , 테스트 2 를 select해서 보여줬다면 

    이번에는 미디어 a 미디어 b를 더해서 c의 값으로 정렬하고싶은것입니다. 

    결과를 출력하자면


    titledatecntmedia
    테스트 1130c
    테스트 2320c

    표로 정리하니깐 제가 잘못설명한거같습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.