SQL计算查询

Posted

技术标签:

【中文标题】SQL计算查询【英文标题】:SQL Calculation Query 【发布时间】:2017-02-18 07:31:14 【问题描述】:
SELECT
    (SELECT sum(cost) from cost_table) AS "amount_paid"
FROM member_management;

我需要子查询计算出来的值,用于 下一列进行进一步计算。示例如下:

SELECT
    (SELECT sum(cost) from cost_table) AS "amount_paid",
    amount_paid/5 AS "share price"
FROM member_management;

【问题讨论】:

我想你可以解决这个问题 一个建议,请使用“SQL 计算查询”之类的标题来提示您需要帮助的主题,并将问题与代码一起作为问题文本的一部分写入 会记住这一点,我是新手,谢谢顺便说一句 【参考方案1】:

您不能在定义它的同一 select 子句中重用别名。解决这个问题的一种方法是进行计算

SELECT m.*, amount_paid, share_price 
FROM member_management m
cross join 
(
    SELECT sum(cost) as amount_paid, sum(cost) / 5 as share_price 
    from cost_table
) tmp

【讨论】:

这是实际的查询。星星之间的代码需要以我尝试过您的解决方案的格式进行转换,但也许我写错了。你能帮忙吗谢谢[link]gist.github.com/anonymous/7036375fecb31b7d6f01004b15898472【参考方案2】:

由于您不能在选择列表中的另一个表达式中引用列别名,因此您需要

在第二次计算中重复 sliased 表达式 或者您需要将子查询从选择列表移动到 from 子句

第二条建议的示例代码:

SELECT
    amount_paid",
    amount_paid/5 AS share price
FROM (SELECT sum(cost) as amount_paid from cost_table) t
Join member_management

【讨论】:

这是实际的查询。星星之间的代码需要以我尝试过您的解决方案的格式进行转换,但也许我写错了。你能帮忙吗谢谢[link]gist.github.com/anonymous/7036375fecb31b7d6f01004b15898472 请编辑问题本身并包含相关代码。但是,下次请任何人回答之前这样做,因为你这样浪费我们的时间。 [链接]gist.github.com/anonymous/b5ca7b45d8180c52b9d45186c4e73a6b。我可能更难通过大查询来理解这个概念。很抱歉浪费你的时间,我是新手。虽然我得到了解决方案,但它在链接中。谢谢【参考方案3】:

sum(cost) = "amount_paid" and amount_paid/5 = "share price" 那么你应该这样使用 sum(cost)/5 = "share price"..试试这个

SELECT
(SELECT sum(cost) from cost_table) AS "amount_paid",
(SELECT sum(cost)/5 from cost_table) AS "share price"
FROM member_management;

【讨论】:

[链接]gist.github.com/anonymous/7036375fecb31b7d6f01004b15898472。这是实际的查询。星星之间的部分 (** ** ) 需要转换。我想避免重新输入整个内容。【参考方案4】:

上面使用的查询只是为了理解这个概念

“file 1”包含我正在使用的实际查询,“file 2”包含解决方案

[链接]https://gist.github.com/anonymous/b497f6a379d26532144ac13bd5fde20e

【讨论】:

以上是关于SQL计算查询的主要内容,如果未能解决你的问题,请参考以下文章

sql如何计算会员在线时长

组合 SQL 查询,基于计算连接表

计算比率的sql查询优化

用于计算每天订单总数的 SQL 查询?

SQL 查询计算两个附加列

sql [sql]使用日期过滤计算1个查询中的多个计数