gpt4 book ai didi

mysql - 如何根据排序顺序百分位数进行分类/评分

转载 作者:行者123 更新时间:2023-11-29 23:25:26 26 4
gpt4 key购买 nike

我试图根据多个不同的标准给不同的城市打从 1 到 5 的“分数”,最终将分数相加并决定哪个城市最好。

表“international_tobacco_alcohol”包含居民用于酒精和烟草的收入百分比值。我想将结果分为 5 个分类,其中 1 是支出百分比最低,5 是最高。

我添加了“sort_order”列

ALTER TABLE international_tobacco_alcohol ADD COLUMN sort_order INT DEFAULT NULL;

SET @x = 0;
UPDATE international_tobacco_alcohol SET sort_order = (@x:=@x+1)
ORDER BY spent_on_alcohol_and_tobacco;
SELECT * FROM international_tobacco_alcohol;

然后我想添加“分数”列,但我不知道如何正确执行。我基本上尝试了我能想到的所有变体:

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;

我希望 CASE WHEN 子句与总行数成比例,而不是预定义值,以便它可以重新创建并与新数据一起使用。

我很感谢一些帮助。如果我可以创建分数而无需创建“sort_order”列的中间步骤,那也很棒。`

最佳答案

您不需要按[spent_on_alcohol_and_tobacco]排序[sort_order]。另一种方法是使用 RANK() 函数或 DENSE_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 - 如何根据排序顺序百分位数进行分类/评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27008698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com