mysql - 在 MYSQL 中使用 SELECT 语句中的变量进行计算?

标签 mysql sql select

是否可以使用两列的值在新列中进行计算?

查询:

SELECT department.id  AS 'ID', 
   department.des AS 'Department',  
   CASE department.des 
     WHEN 'Retail Sales' THEN ( IFNULL(SUM(form.amount), 0) 
                                + (SELECT SUM(creditnote.amount) 
                                   FROM   wf_creditnote AS creditnote 
                                   WHERE  creditnote.status = 'a' 
                                          AND YEAR(creditnote.submittime) = 2013 
                                          AND MONTH(creditnote.submittime) = 11) ) 
     ELSE IFNULL(SUM(form.amount), 0) 
   END            AS 'Actual',
   budget.budget  AS 'Budget'
FROM   (wf_analysis_billcodes AS billcode 
    LEFT JOIN wf_waiving AS form 
           ON form.billcode = billcode.bill_code 
              AND form.status = 'a' 
              AND YEAR(form.sbmt) = 2013 
              AND MONTH(form.sbmt) = 11), 
   wf_analysis AS department, 
   wf_analysis_budgets AS budget 
WHERE  department.id = billcode.dept_id 
   AND department.id = budget.dept_id 
   AND budget.year = 2013 
   AND budget.month = 11 
GROUP  BY department.des 
ORDER  BY department.id ASC 

结果:

+----+------------+--------+--------+
| ID | Department | Actual | Budget |
+----+------------+--------+--------+
|  1 | IT         |    327 |    200 |
|  2 | Finance    |    312 |    500 |
|  3 | Marketing  |    100 |    650 |
|  4 | HR         |    423 |    320 |
+----+------------+--------+--------+

我想通过 SELECT 语句添加百分比列。

最佳答案

将查询转换为子查询,并在主查询中执行计算,如下所示:

SELECT q.*,
       ((Budget-Actual)*100/Budget) AS Percent
FROM (

  ... your query ...

) AS q

演示 --> http://www.sqlfiddle.com/#!2/9b061/2

为了避免除以 0 错误,可以使用 case 表达式:

SELECT q.*,
       CASE WHEN Bydget <> 0 
            THEN  ((Budget-Actual)*100/Budget)
            ELSE 0
       END AS Percent
FROM (

  ... your query ...

) AS q

关于mysql - 在 MYSQL 中使用 SELECT 语句中的变量进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20372736/

相关文章:

mysql - 在mysql中找到没有原始记录的重复记录

mysql - 记录之间的平均间隔

php - Jquery Ajax 在无限制地从 Mysql 中拉取时不返回任何内容,也没有错误

mysql - SQL 查询 max(), count()

sql - Acts-as-taggable-on 按上下文查找所有标签

mysql - 从嵌套子查询中选择多列

jQuery - 通过元素 id 设置选择索引

python - 使用 python 和 beautifulsoup 选择菜单从网页获取数据

html - 样式选择和多项选择?

mysql - 使用 sailsjs 从 database.query() 返回数据