簡體   English   中英

使用新的別名列作為鍵聯接表

[英]Joining tables using a new alias column as the key

當我嘗試將2個表與數據聯接時,出現一個錯誤,即我的引用不明確,或者得到的順序是我的原始表沒有別名列。

這是我的第一個sql項目,對我來說是一個重要的學習點,因此我感謝指導。

這是我的代碼。

WITH 
RentDotComOnly AS
(
  SELECT 
    concat(DATE_PART(mm,archived_apartments.week),clean_zip) AS "monthlyzip",
    COUNT(clean_zip) AS "rent_count_clean_zip", 
    AVG((low_price+high_price)/2) AS "rent_avg_price", 0.85*min(low_price) AS "rent_lower_bound", 1.15*max(high_price) AS "rent_upper_bound"
  FROM 
    archived_apartments 
  WHERE 
    source_type in (29,36,316) 
    AND week between '2015-07-06' and '2015-10-12' 
    AND is_house <> 1  
    AND archived_apartments.high_price <> 0 
  GROUP BY monthlyzip
),
AllRJData AS
(
  SELECT
    concat(DATEPART(mm,archived_apartments.week),clean_zip) AS "monthlyzip",
    COUNT(clean_zip) AS "all_count_clean_zip", 
    AVG((low_price+high_price)/2) AS "all_avg_price"
  FROM 
    archived_apartments 
  WHERE 
    week between '2015-07-06' and '2015-10-12' 
    AND is_house <> 1  
  GROUP BY monthlyzip
)
SELECT 
  concat(DATE_PART(mm,archived_apartments.week),clean_zip) AS "monthlyzip",
  COUNT(archived_apartments.clean_zip) as filtered_count_clean_zip, 
  RentDotComOnly.rent_count_clean_zip, RentDotComOnly.rent_avg_price, RentDotComOnly.rent_lower_bound, RentDotComOnly.rent_upper_bound,
  AllRjData.all_count_clean_zip, AllRjData.all_avg_price
FROM
archived_apartments 
JOIN AllRJData 
ON concat(DATE_PART(mm,archived_apartments.week),archived_apartments.clean_zip) = AllRJData.monthlyzip
JOIN RentDotComOnly
ON concat(DATE_PART(mm,archived_apartments.week),archived_apartments.clean_zip) = RentDotComOnly.monthlyzip
WHERE 
  archived_apartments.week between '2015-07-06' and '2015-10-12'
  AND archived_apartments.is_house <> 1 
  AND archived_apartments.high_price <> 0 
  AND archived_apartments.low_price > RentDotComOnly.rent_lower_bound
  OR archived_apartments.high_price < RentDotComOnly.rent_upper_bound
  AND archived_apartments.week between '2015-07-06' and '2015-10-12'
  AND archived_apartments.is_house <> 1 
  AND archived_apartments.high_price <> 0 
GROUP BY monthlyzip
RentDotComOnly.rent_count_clean_zip, RentDotComOnly.rent_avg_price, RentDotComOnly.rent_lower_bound, RentDotComOnly.rent_upper_bound, 
AllRjData.all_count_clean_zip, AllRjData.all_avg_price
ORDER BY monthlyzip

問題是您在monthlyzip中引用的monthlyzip列不明確。 您有帶有該列的三個表,您要引用哪個表?

如果archived_apartments存在archived_apartments ,則可以執行以下操作:

FROM
archived_apartments JOIN
AllRJData 
ON archived_apartments.monthlyzip = AllRJData.monthlyzip
JOIN RentDotComOnly 
ON archived_apartments.monthlyzip = RentDotComOnly.monthlyzip

但是聽起來archived_apartments中不存在monthly_zip ,因此您實際上無法加入該字段。 相反,您必須加入用於制作monthlyzip的公式:

FROM
archived_apartments JOIN
AllRJData 
ON concat(DATEPART(mm,archived_apartments.week),archived_apartment.clean_zip)  = AllRJData.monthlyzip
JOIN RentDotComOnly 
ON concat(DATEPART(mm,archived_apartments.week),archived_apartment.clean_zip)  = RentDotComOnly.monthlyzip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM