【问题标题】:Reuse results of column in another column在另一列中重用列的结果
【发布时间】:2015-04-24 17:26:08
【问题描述】:

如果我有疑问

SELECT id,name,SUM(investments) as total_investments, SUM(investments)/10 as per_ten_investment
FROM table1
GROUP BY name

我有什么方法可以在 per_ten_investment 的计算中使用 total_investments 吗?所以我可以用上面的代替

SELECT id,name,SUM(investments) as total_investments, total_investments/10 as per_ten_investment
FROM table1
GROUP BY name

上面的结果是一个错误 Unknown column 'total_investments' in 'field list'

我遇到的问题要复杂得多,但归结为这一障碍。 谢谢大家。

【问题讨论】:

    标签: mysql database select


    【解决方案1】:

    一种选择是使用子查询,然后您可以只引用求和字段。话虽如此,我认为您的查询没有任何问题:

    SELECT id, name, total_investments, total_investments/10 per_ten_investment
    FROM (SELECT id, name, SUM(investments) as total_investments
        FROM table1
        GROUP BY name) t
    

    此外,根据您的数据,您可能希望将id 字段添加到group by。 mysql比其他的更宽容。

    【讨论】:

    • 我的第一个查询工作正常,我真正的问题是我的实际查询中有大量逻辑,我不想重复两次,我宁愿做一次,得到结果,然后在另一列中使用该结果
    【解决方案2】:

    这也应该有效

    SELECT id,name,SUM(investments) as total_investments, SUM(investments)/10 as per_ten_investment
    FROM table1
    GROUP BY name
    

    【讨论】:

    • 不,这不是... /10 现在是在总 SUM(investments) 而不是 total_investments 上完成的...仔细阅读...
    • 你看到 OP 的第一个查询了吗? SUM(investments)/10 as per_ten_investment -- 看起来像你的...
    • 我们确实阅读了问题,显然您没有。 @sgeddes 我做了
    • 这和我的第一个查询一样
    猜你喜欢
    • 2011-05-12
    • 2021-11-12
    • 2016-03-24
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多