2017-11-16 1 views
0

SQL에 관해서는 언제나 기분이 좋지 않습니다.Group By 및 Join을 사용하여 여러 테이블의 세부 정보를 가져 오는 쿼리

Revenue Table 
Clicks 
impressions 
ad_id 
device_id 
money_generated 
date 

다음과 같이 장치의 세부 사항을 가지고 또 다른 테이블 :

Devices 
device_id 
device_name 

하나 개 이상의 테이블이 광고를 말한다 ..

Ads Table 
ad_name 
ad_id 
---- 

나는 두 개의 테이블이 구조 다음시킨 테이블 수익 말 이제 내가 원하는 것은 특정 날짜 사이에 특정 광고에 대해 특정 기기에서 생성 된 노출 수, 클릭 수, 금액의 합을 가져 오는 것입니다.

수익 & 장치 테이블을 연결했지만이 쿼리를 시도했지만 실패했습니다.

select 
    device_name, 
    revenue.impressions, 
    revenue.clicks, 
    revenue.money_generated, 
    revenue.ad_id 
FROM 
    (select 
     device_id, 
     dim_ad_id, 
     SUM(imp_count) as impressions, 
     SUM(click_count) as clicks, 
     SUM(money_generated) as revenue, 
    from 
     revenue 
    GROUP BY 
     ad_id 
    GROUP BY 
     device_id 
    WHERE 
     dim_Date>'2017-11-02 10:33:00' 
     and dim_date<'2017-11-08 00:56:22') revenue 
JOIN deviceTable as devices ON 
devices.device_id=revenue.device_id 
and devices.device_name IN ('ABC') 

여기에 붙여 넣기 전에 열 이름의 약간의 실수를 무시하십시오. SQL을 더 잘 이해할 수 있도록 도와주세요.

+0

문이 실행 되니 ?? 오류가 발생하지 않으면 놀랄 것입니다. – Eric

답변

1

파생 테이블에 두 개의 GROUP BY 절이있어 구문 오류가 발생합니다.

select 
    device_name, 
    revenue.impressions, 
    revenue.clicks, 
    revenue.money_generated, 
    revenue.ad_id 
FROM 
    (select 
     device_id, 
     dim_ad_id, 
     SUM(imp_count) as impressions, 
     SUM(click_count) as clicks, 
     SUM(money_generated) as revenue, 
    from 
     revenue 
    GROUP BY 
     ad_id, device_id  --fixed syntax here 
    WHERE 
     dim_Date>'2017-11-02 10:33:00' 
     and dim_date<'2017-11-08 00:56:22') revenue 
JOIN 
    deviceTable as devices ON 
    devices.device_id = revenue.device_id 
    and devices.device_name IN ('ABC') 
LEFT JOIN 
    Ads on 
    Ads.ad_id = revenue.dim_id --or what ever it should be 
+0

오, 소년! 내 나쁜 .. 내가 다시 시도하자 :) 빠른 답장을 보내 주셔서 감사합니다. 그것은 여기 자정이고이 sqls는 나를 죽이고 있습니다 – user3681970

+0

Bro .. 위대한 :) 우리는 성공적으로 두 테이블에 가입했습니다. 어떻게 광고 정보를 가져 오기 위해 광고 테이블에 가입합니까? 그냥 한 예 shud 괜찮을 .. 내가 remaning 4-5 테이블에 비슷한 방식으로 합류합니다 – user3681970

+0

위의 모든 쿼리를 하나의 가상 테이블로 가정하고 광고 테이블과 연결해야합니까? 예를 들어 모든 것을 설명 할 것입니다 – user3681970

관련 문제