MySQL:从大子查询中规范化列

时间:2015-11-02 23:50:23

标签: mysql

我有一个非常大的子查询:

(SELECT Id, Count [...] FROM Something) Counts

我想为每个Id创建一个分数,即分数除以最大数量。

我试过了:

SELECT Id, Count/(SELECT MAX(Count)) AS Score 
FROM (SELECT Id, Count [...] FROM Something) Counts

但这只会返回第一行!

如果我执行GROUP BY Id,则所有分数都等于1(因为每个Id都会获得最大值,而不是所有ID)。

你知道我能做什么吗?我知道在某些情况下我们可以在WITH子句中嵌入子查询,但这在MySQL中无效。

1 个答案:

答案 0 :(得分:0)

我相信这就是你所需要的:

选择Id,(Count /(SELECT MAX(Count)FROM Something))As [Score] FROM Something

说明: 我相信你想在表格中占据最大值。为此,您需要在整个表集上执行子查询,而不是将其限制为特定的ID或对其进行分组。当您通过操作ID执行组时,假设每个Id都是唯一的,它实际上返回Id,Count / Count。如你所知,任何非零数字除以它都是1。