Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL公式将线性刻度转换为对数刻度_Mysql - Fatal编程技术网

MySQL公式将线性刻度转换为对数刻度

MySQL公式将线性刻度转换为对数刻度,mysql,Mysql,我试图根据订单数量计算一个城市人气栏。人气指数必须介于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万张订单 由于订单分布

我试图根据订单数量计算一个城市人气栏。人气指数必须介于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

我们希望有一个对数刻度,这样我们仍然可以比较最不受欢迎城市的受欢迎程度

将流行度从线性比例转换为对数比例的公式是什么?

更新位置内部连接 从orders GROUP BY zip中选择zip,COUNT1 popularity作为orderCount 设置location.popularity=archiveCount.popularity*100/800000 其中location.zip=archiveCount.zip

尝试此查询:

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

请注意,您需要确定最大值。

一条语句没有多大帮助。你最好解释一下答案是如何解决问题的。另外,我认为答案是错误的,因为您没有回答如何平滑非线性分布的问题,而实际的SQL语句是无效的。