MySQL - 根据该列乘以值

标签 mysql sql linqpad

我该怎么写这个..我有一个表“公司”,其中有一列“大小”。大小引用枚举。当“大小”列为时,我需要通过替换“大小”列来将平均公司规模显示为别名 AS“AverageEstimatedCompanySize”:

1 = 15
2 = 30
3 = 50
4 = 100
5 = 250

换句话说,我的表格将公司规模显示为 1、2、3、4 或 5。而 1 实际上是公司规模 15。

这都是更大查询的一部分:

SELECT COUNT(DISTINCT(ID)) AS 'Total # of Opps', AVG(Size*?) AS 'AverageEstimatedCompanySize'
FROM persontable AS POJT INNER JOIN opportunity
ON POJT.ID = opportunity.id
WHERE opportunity.TimeStamp >= '2012-01-01' AND opportunity.TimeStamp <= '2012-12-31' AND POJT.JobTitleID IN 
    (SELECT Id
    FROM job
    WHERE CategoryID IN 
        (SELECT id
        FROM job_category
        WHERE name IN ('Sc', 'Ma', 'Co', 'En', 'Tr')))

最佳答案

听起来像是可以用 case statement 解决的问题。以下内容未经测试,但应该为您指明正确的方向。

SELECT 
    COUNT(DISTINCT(ID)) AS 'Total # of Opps', 
    AVG(
        CASE Size
            WHEN 1 THEN 15
            WHEN 2 THEN 30
            WHEN 3 THEN 50
            WHEN 4 THEN 100
            WHEN 5 THEN 250
        END
    ) AS 'AverageEstimatedCompanySize'
FROM persontable AS POJT INNER JOIN opportunity
ON POJT.ID = opportunity.id
WHERE opportunity.TimeStamp >= '2012-01-01' AND opportunity.TimeStamp <= '2012-12-31' AND POJT.JobTitleID IN 
    (SELECT Id
    FROM job
    WHERE CategoryID IN 
        (SELECT id
        FROM job_category
        WHERE name IN ('Sc', 'Ma', 'Co', 'En', 'Tr')))

关于MySQL - 根据该列乘以值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18902375/

相关文章:

mysql - 使用一条语句在 MySQL 中添加多列

linq-to-sql - 如何在 linq pad 中执行左连接 -

c# - 在 LINQ C# 中加入和排序

Mysql插入包含双逗号的值

sql - 在 SQL View 中的列选择中使用左连接别名

mysql - 触发器在 PhpMyAdmin sql 选项卡中不起作用

ios - 类方法返回不同的值

c# - oracle在linqpad中插入/删除问题

php - 新条目后 AJAX 分页无法正常工作

php - 更新 mysql 表中的部分值