簡體   English   中英

在自連接中,為什么一張表給出 null 值?

[英]In self join why one table giving null value?

我正在使用數據塊社區版。 我創建了一個臨時視圖。

%python
df.createOrReplaceTempView("athlete_events_csv")

表視圖模式

我正在寫的查詢

with medal_count_by_country as
(SELECT NOC, Year, count(*) as medal_count, row_number() over( partition by NOC order by Year) as year_count
FROM athlete_events_csv
WHERE Medal in ('Gold', 'Silver', 'Bronze')
GROUP BY NOC, Year)

SELECT m1.NOC, m1.Year, m1.medal_count, m1.year_count, m2.year_count, ((m1.medal_count - m2.medal_count)/m1.medal_count)*100 as percentage_increase
FROM medal_count_by_country m1 left join medal_count_by_country m2
ON m1.NOC = m2.NOC AND m1.Year = m2.Year and m1.year_count-1 = m2.year_count

查詢輸出

誰能指導我為什么“m2.year”計數顯示為“Null”?

我有一個關於國家、年份等明智運動員賽事細節的數據集。 我正試圖讓 YOY 獲勝者的百分比增加。

這好像是夏季奧運會的數據? 它們每 4 年才舉行一次,您可能需要加入m1.year_count-4 = m2.year_count

在這種情況下, join子句中的條件是錯誤的。

導致問題的部分是m1.Year = m2.Year

您正在嘗試按年份join數據框,然后按同一年列排序的row_number連接數據框。 這就是為什么你只得到null值。 沒有什么可以返回的。

刪除該部分,您將收到正確的結果。

暫無
暫無

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

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