2013-05-28 7 views
0

특정 날짜 범위에 대해 Google 테이블에서 판매 합계를 가져와 그 요일별로 그룹화 한 결과를 표시해야합니다.첫 번째 열의 합계 가져 오기 DISTINCT 두 번째 열

다음은 내가 지금까지

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
     FROM threewor_vend.vendsales AS s 
     WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
     AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
     GROUP BY DAYOFWEEK(sale_date) 

이 대단한 매일의 하루 총 매출을 반환 무슨이다 (차트를 만드는).

판매 당 하나 이상의 항목이있는 경우 '판매 당'행이 여러 개 있습니다. 따라서 총 가격은 여러 번 중복됩니다. 그래서 total_price의 합계를 얻을 수는 없습니다.

각 유니크 판매 단위에 대해서만 total_price의 합계가 필요합니다.

예를 들어 MySQL의에서

sale id | item | itemqty | item value | item total | total_price | 
---1----|-drum-|-1-------|-60.00------|-60.0-------|-$230.00-----| 
---1----|-uke--|-1-------|-170.00-----|-170.0------|-$230.00-----| 

답변

1

sale_id로 그룹화 할 수 있습니다. 이것은 중복을 제거합니다

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
    FROM (select s.* 
      from threewor_vend.vendsales s 
      group by sale_id 
     ) s 
    WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
    AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
    GROUP BY DAYOFWEEK(sale_date); 

을만큼 다른 열로 - sale_datetotal_price, total_taxregister_id이 - 주어진 sale_id에 대한 모든 행에서 동일, 다음이 작동합니다.

1

판매 당 total_price를 여러 번 저장하므로 결과가 배가됩니다.

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
FROM (
    SELECT DISTINCT sale_date, total_price, total_tax, register_id 
    FROM threewor_vend.vendsales 
    WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
     AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
) t 
GROUP BY DAYOFWEEK(sale_date) 
:

여기 DISTINCT은 네 개의 필드가 모두 각각의 중복 판매를위한 동일한 가정으로 하위 쿼리를 사용하여 하나의 옵션을의

관련 문제