![](/img/trans.png)
[英]Self Join a table via subquery - in the SELECT clause (Spark SQL)
[英]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.