2016-11-21 5 views
0

이 비슷한 구조의 Redshift에 대한 표가 있다고 가정 해보십시오. Product_Bill_ID는이 테이블의 기본 키입니다.변수가있는 빨간색 변속 횟수

| Store_ID | Product_Bill_ID | Payment_Date  
| 1  | 1    | 01/10/2016 11:49:33  
| 1  | 2    | 01/10/2016 12:38:56  
| 1  | 3    | 01/10/2016 12:55:02  
| 2  | 4    | 01/10/2016 16:25:05  
| 2  | 5    | 02/10/2016 08:02:28  
| 3  | 6    | 03/10/2016 02:32:09 

내가 Product_Bill_ID의 수를 조회 할 경우 그 나는이 작업을 수행 할 수있는 방법은 첫 번째 Product_Bill_ID 판매 후 첫 시간에 판매 상점,?

이 예는 결과

첫 번째 시간을 얻을 필요가
| Store_ID | First_Payment_Date | Sold_First_Hour  
| 1  | 01/10/2016 11:49:33 | 2     
| 2  | 01/10/2016 16:25:05 | 1      
| 3  | 03/10/2016 02:32:09 | 1     

답변

0

해야한다. 즉, 쉽게 충분히 사용하여 윈도우 함수입니다 :

select store_id, count(*) 
from (select s.*, 
      min(payment_date) over (partition by store_id) as first_payment_date 
     from sales s 
    ) s 
where payment_date <= first_payment_date + interval '1 hour' 
group by store_id; 
0
SELECT 
    store_id, 
    first_payment_date, 
    SUM(
     CASE WHEN payment_date < DATEADD(hour, 1, first_payment_date) THEN 1 END 
    ) AS sold_first_hour 
FROM 
(
    SELECT 
     *, 
     MIN(payment_date) OVER (PARTITION BY store_id) AS first_payment_date 
    FROM 
     yourtable 
) 
    parsed_table 
GROUP BY 
    store_id, 
    first_payment_date 
: 다음

select s.*, 
     min(payment_date) over (partition by store_id) as first_payment_date 
    from sales s 

, 당신은 날짜 필터링 및 집계를 할 필요가