首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个表SQL的不同列中计数值

在一个表SQL的不同列中计数值
EN

Stack Overflow用户
提问于 2016-11-27 22:30:12
回答 3查看 180关注 0票数 2

例如,我的桌子上有数据--10个志愿者。有两种类型的志愿者-学生和工作人员。如何使用此视图在一个表中插入几个列:

计数(Volunteer_id),计数(Volunteer_id)在Volunteer_type =‘学生’,计数(Volunteer_id),其中Volunteer_type =‘工作人员’

代码语言:javascript
运行
复制
SELECT COUNT(Volunteer_id) AS "TOTAL VOLUNTEERS"
from volunteer
UNION
SELECT COUNT(Volunteer_id) AS "TOTAL VOLUNTEERS"
from volunteer
WHERE Volunteer_type = 'Staff'
UNION
SELECT COUNT(Volunteer_id) AS "TOTAL VOLUNTEERS"
from volunteer
WHERE Volunteer_type = 'Student'

这个语句现在表示为行,但我想使它们成为列。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-27 22:33:38

使用条件聚合:

代码语言:javascript
运行
复制
SELECT
    COUNT(*) AS "Total Volunteers",
    COUNT(CASE WHEN Volunteer_tpye = 'Staff' THEN 1 END) AS "Staff Volunteers",
    COUNT(CASE WHEN Volunteer_tpye = 'Student' THEN 1 END) AS Student
FROM volunteers
票数 5
EN

Stack Overflow用户

发布于 2016-11-27 22:56:15

代码语言:javascript
运行
复制
DECLARE @volunteer TABLE 
(Volunteer_id int 
,Volunteer_type varchar(50) )

INSERT INTO @volunteer  VALUES (1,'Staff')
INSERT INTO @volunteer  VALUES (1,'Staff')
INSERT INTO @volunteer  VALUES (1,'Staff')

INSERT INTO @volunteer  VALUES (1,'Student')
INSERT INTO @volunteer  VALUES (1,'Student')
INSERT INTO @volunteer  VALUES (1,'Student')


SELECT COUNT(Volunteer_id) AS "TOTAL VOLUNTEERS"
       ,(
           SELECT  COUNT(tb1.Volunteer_id) AS "TOTAL VOLUNTEERS"
           FROM   @volunteer AS tb1
           WHERE  tb1.Volunteer_id = tb.Volunteer_id
             AND  tb1.Volunteer_type = 'Staff'


       )
       ,(
           SELECT COUNT(volunteer_Student.Volunteer_id) AS "TOTAL VOLUNTEERS"
           FROM   @volunteer AS volunteer_Student
           WHERE  volunteer_Student.Volunteer_id = tb.Volunteer_id
             AND  volunteer_Student.Volunteer_type = 'Student'
       )
FROM   @volunteer tb
GROUP BY tb.Volunteer_id
票数 0
EN

Stack Overflow用户

发布于 2016-11-27 23:32:20

试试这个:

代码语言:javascript
运行
复制
select
  sum(t.x_all) cnt_all,
  sum(t.x_staff) cnt_staff,
  sum(t.x_student) cnt_student
from (
  select
    1 x_all,
    case when v.volunteer_type = 'Staff' then 1 else 0 end x_staff,
    case when v.volunteer_type = 'Student' then 1 else 0 end x_student
  from volunteer v
) t
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40834692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档