학구스
250
2019-07-01 17:24:42
3
201

[ SQL ] GROUP BY 진행시 URL을 기준으로 하는데 파라미터값때문에 제대로되지않을때 질문드립니다!


Select log_url, COUNT(*) allcount FROM randing_kakao_log GROUP BY log_url


위와같은 쿼리문으로 디비를 조회하면


[log_url]

http://유입경로/99dc/2/



log_urlallcount
http://유입경로/99dc/2/
30
http://유입경로/99dc/2/?ref=3321&cc=1788
14
http://유입경로/99dc/2/?ref=6621&cc=1789
2
http://유입경로/99dc/2/?ref=6829&cc=1790
5


이런식으로 GROUP BY 가 되는데요!


log_url 에서 뒤에붙은 파라미터들( ?ref=3321&cc=1788 )을 제거하려 GROUP BY 를 하고싶은데

어떻게 해야할지 모르겠습니다 ㅜㅜ


예) ?를 기준으로 잘라서 앞쪽 ( http://유입경로/99dc/2/ ) 기준으로 통계치를 구하고싶습니다!


1
0
  • 답변 3

  • 사는게힘듭니다
    2019-07-01 17:28:04 작성 2019-07-01 17:32:03 수정됨

    유입경로면 동적경로이다보니 substr로 짜르기엔 무리가있을것 같고

    아니면 저 쿼리목록을 가져와서 for루프로 log_url을 변수에 담아 서버에서

    split("?")기준으로 쪼개서 데이터 가공해서 가공된 값을 한번더 쿼리날리셔야할듯..

    2
  • 학구스
    250
    2019-07-01 17:40:20

    답변 감사합니다!!

    0
  • GreedTech
    34
    2019-07-01 17:43:04

    아래와 같이 char index로 ? 기준으로 substring 하면 되지않을까합니다.



    WITH TMP AS (

    SELECT 'http://유입경로/99dc/2/' url

    UNION ALL

    SELECT 'http://유입경로/99dc/2/?ref=3321&cc=1788' url

    UNION ALL

    SELECT 'http://유입경로/99dc/2/?ref=6621&cc=1789' url

    UNION ALL

    SELECT 'http://유입경로/99dc/2/?ref=6829&cc=1790' url

    UNION ALL

    SELECT 'http://naver.com/99dc/2/?ref=6829&cc=1789' url

    UNION ALL

    SELECT 'http://naver.com/99dc/2/?ref=6829&cc=1790' url

    UNION ALL

    SELECT 'http://daum.net/99dc/2/?ref=6829&cc=1789' url

    UNION ALL

    SELECT 'http://daum.net/99dc/2/?ref=6829&cc=1790' url

    )

    , TMP1 AS (

    SELECT CASE WHEN SUBSTRING(url,1,CHARINDEX('?',url)) = '' THEN url

      ELSE SUBSTRING(url,0,CHARINDEX('?',url)) 

      END url

    FROM TMP

    )

    SELECT * 

    FROM TMP1

    GROUP BY url

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