SQL 查询求和分组依据

问题描述 投票:0回答:1

我有一个类似于下面结构的表格

table 
ID EmployeeID factor
1.  100       A
2.  100       B
2.  100       C

我的要求是对于给定的 EmployeeID,我需要用数值替换因子并对因子求和,其中 A = 1 、 B=2 和 C=3

使用选择查询,我能够替换值并查看表格

select employeeid,
       case factor
        WHEN 'F' THEN 4
        WHEN 'EC' THEN 2
        WHEN 'E' THEN 1
        ELSE 0
        END as factor
        From employee
        where employee_id = 100

但是当我尝试使用 sum 和 group by 来获取查询语法错误时

select employeeid,count(*) as count
       sum(case factor
        WHEN 'F' THEN 4
        WHEN 'EC' THEN 2
        WHEN 'E' THEN 1
        ELSE 0
        END as factor) as factor
        From employee
        where employee_id = 100
        group by employeeid,count

sql mysql
1个回答
0
投票

使用

GROUP BY and HAVING
获取特定员工的数据。

同时更正

SUM(CASE...END)
的说法

所以,SQL 查询应该是:

select employeeid,
    count(employeeid),
    sum(
      CASE (factor)
        WHEN 'F' THEN 4
        WHEN 'EC' THEN 2
        WHEN 'E' THEN 1
        ELSE 0
    END
   ) as factor
From employee
group by employeeid
having employeeid = 100

示例查询:db<>fiddle

© www.soinside.com 2019 - 2024. All rights reserved.