SQL-将频率列添加到数据

时间:2018-05-21 06:28:41

标签: sql

我有一个具有分类变量的数据集。我需要在该数据集中添加一列,以显示相应级别的频率。

例如,假设您有一个具有状态列的数据集。这是输入数据集。在输出数据集中,对于现在的每一行,还会有一列用于告诉我特定状态在数据集中出现的次数。

实施例

# Date_Built    Square_Footage  Num_Beds    Num_Baths   State   Price
# 01/01/1920    1700            3           2           NY      700,000   

# Date_Built    Square_Footage  Num_Beds    Num_Baths   State   Price     Freq_State
# 01/01/1920    1700            3           2           NY      700,000   4,500

在此示例中,添加了Freq_State列,用于捕获NY列中4500出现State次的信息

这是我到目前为止所做的,但它只给出了列的频率。我经历了类似的问题here,但两个答案都建议创建一个新视图。有没有办法可以直接添加此列而无需创建新表

select
  count(grp_column) as freq_encode,
  grp_column
from
  df_sql_tbl
group by
  grp_column

2 个答案:

答案 0 :(得分:3)

Spark SQL应该支持窗口函数,因此,尝试使用它们

select *,
       count(*) over (partition by state)
from your_table

答案 1 :(得分:1)

SELECT t1.*, 
       (SELECT count(*) cnt FROM df_sql_tbl WHERE state = t1.state)
FROM df_sql_tbl t1