我正在尝试根据订单数计算城市的“受欢迎程度”列。流行指数必须为0到100。
我们有这个查询(简体):
UPDATE city INNER JOIN
(SELECT zip, COUNT(1) popularity FROM order GROUP BY zip) AS orderCount
ON city.zip = orderCount.zip
SET city.popularity = orderCount.popularity*100/800000
最受欢迎的拉链有80万笔订单。
由于订单分布不是线性的,因此我们有一些城市的价值很高,而其他大多数城市的数量很少。 因此,大多数流行度是1或0。
我们希望有一个对数刻度,以便我们仍然可以比较最受欢迎的城市的受欢迎程度。
将流行度从线性标度转换为对数标度的公式是什么?
答案 0 :(得分:1)
尝试此查询:
UPDATE city INNER JOIN
(SELECT zip, LOG(10, COUNT(1)) popularity FROM order GROUP BY zip) AS orderCount
ON city.zip = orderCount.zip
SET city.popularity = orderCount.popularity*100/GreatestValue
请注意,您需要确定GreatestValue
。
答案 1 :(得分:-2)
更新位置INNER JOIN (选择zip,COUNT(1)个流行度来自订单GROUP BY zip)AS orderCount SET location.popularity = archiveCount.popularity * 100/800000 WHERE location.zip = archiveCount.zip;