Mysql 如何基于排序顺序百分位数进行bin/评分
我试图根据多个不同的标准给不同的城市一个从1到5的“分数”,最终把分数加起来,决定哪个城市最好 “国际烟酒”表包含了居民在烟酒上消费的收入百分比值。我想把结果分成5个分类箱,其中1是最低百分比支出,5是最高百分比支出 我添加了一个“排序顺序”列 然后我想添加“score”列,但我不知道如何正确添加。我已经尝试了我能想到的所有变化:Mysql 如何基于排序顺序百分位数进行bin/评分,mysql,sql,Mysql,Sql,我试图根据多个不同的标准给不同的城市一个从1到5的“分数”,最终把分数加起来,决定哪个城市最好 “国际烟酒”表包含了居民在烟酒上消费的收入百分比值。我想把结果分成5个分类箱,其中1是最低百分比支出,5是最高百分比支出 我添加了一个“排序顺序”列 然后我想添加“score”列,但我不知道如何正确添加。我已经尝试了我能想到的所有变化: ALTER TABLE international_tobacco_alcohol ADD COLUMN score INT DEFAULT NULL; UPDATE
ALTER TABLE international_tobacco_alcohol ADD COLUMN score INT DEFAULT NULL;
UPDATE international_tobacco_alcohol
SET score = CASE
WHEN sort_order < .2*MAX(sort_order) THEN 1
WHEN sort_order=> .2*MAX(sort_order)and <.4*MAX(sort_order) THEN 2
WHEN sort_order=> .4*MAX(sort_order)and <.6*MAX(sort_order) THEN 3
WHEN sort_order=> .6*MAX(sort_order)and <.8*MAX(sort_order) THEN 4
WHEN sort_order=> .8*MAX(sort_order)and =<MAX(sort_order) THEN 5
END;
ALTER TABLE international\u tobacco\u alcohold ADD COLUMN score INT DEFAULT NULL;
更新国际烟草和酒精
设置分数=案例
当排序顺序<.2*最大值(排序顺序)时,则为1
当排序顺序=>.2*MAX(排序顺序)和.4*MAX(排序顺序)和.6*MAX(排序顺序)和.8*MAX(排序顺序)和=时,您不需要[在酒精和烟草上花费的钱]的[排序顺序]。
另一种方法是使用RANK()函数或稠密的_-RANK()
我不知道专栏,但你可以这样做:
SELECT [col_1], [col_2]
,RANK() OVER
(PARTITION BY [Location] ORDER BY [spent_on_alcohol_and_tobacco] DESC) AS Rank
FROM [international_tobacco_alcohol]
希望这有帮助MySQL中没有实现窗口函数。
SELECT [col_1], [col_2]
,RANK() OVER
(PARTITION BY [Location] ORDER BY [spent_on_alcohol_and_tobacco] DESC) AS Rank
FROM [international_tobacco_alcohol]