我有一张表格,其中包含有关芝加哥不同社区的社会经济信息,例如无家可归者的百分比,贫困家庭的百分比等。现在我想做的是为每个领域的价值创建箱子,如果百分比低于所有行的平均值,则该值设置为0,而如果百分比等于或高于平均值,则设置为1.
我想这样做,以便我可以使用垃圾箱找到关联规则。
到目前为止,我已经提出了以下问题:
WITH avg AS (SELECT AVG(crowded_housing) AS ch from
algorithms.socioeconomic_bins)
UPDATE algorithms.socioeconomic_bins SET crowded_housing=0 where
crowded_housing<(SELECT ch FROM avg);
这本身就有用,但由于我有8列我想要bin,我必须为每个字段运行此查询两次(对于低于和高于avg)。我找不到任何有用的页面或问题。有什么想法吗?
答案 0 :(得分:0)
您可以像这样使用CASE EXPRESSION:
WITH avg AS (SELECT AVG(crowded_housing) AS ch from
algorithms.socioeconomic_bins)
UPDATE algorithms.socioeconomic_bins
SET crowded_housing= CASE WHEN crowded_housing < (SELECT ch FROM avg)
THEN 0
ELSE 1
END
这将在一个查询中更新表,并将在WHERE子句上分配值。