求助 sql 语句 计数问题

问题描述

求助 sql 语句 计数问题


name s1 s2 s3
zhang A A A
zhang A B B
zhang B B B
li A B B
li B B B

结果
name s1A s1B s2A s2B s3A s3B
zhang 2 1 1 2 1 2
li 1 1 0 2 0 2

问题:分别对每列的不同值进行计数,求助sql语句

解决方案

SqlServer 根据字段分类汇总信息

解决方案二:

select name,sum(
case
when s1='A' then 1
else 0
end) s1A,sum(
case
when s1='B' then 1
else 0
end) s1B,sum(
case
when s2='A' then 1
else 0
end) s2A,sum(
case
when s2='B' then 1
else 0
end) s2B,sum(
case
when s3='A' then 1
else 0
end) s3A,sum(
case
when s3='B' then 1
else 0
end) s3B
from csdn1
group by name;

解决方案三:

create table test_20151029(
name varchar2(50),
s1 varchar2(50),
s2 varchar2(50),
s3 varchar2(50)
);

SELECT t1.name
,SUM(decode(t1.m1
,1
,1)) s1a
,SUM(decode(t1.m1
,-1
,1)) s1b
,SUM(decode(t1.m2
,1
,1,0)) s2a
,SUM(decode(t1.m2
,-1
,1)) s2b
,SUM(decode(t1.m3
,1
,1,0)) s3a
,SUM(decode(t1.m3
,-1
,1)) s3b

FROM (SELECT t.name
,t.s1
,CASE
WHEN t.s1 = 'A' THEN
1
ELSE
-1
END m1
,t.s2
,CASE
WHEN t.s2 = 'A' THEN
1
ELSE
-1
END m2
,t.s3
,CASE
WHEN t.s3 = 'A' THEN
1
ELSE
-1
END m3

      FROM test_20151029 t) t1

GROUP BY t1.name

时间: 2024-11-08 21:23:20

求助 sql 语句 计数问题的相关文章

求助sql语句面试题,详情请看图,谢谢给位了

问题描述 求助sql语句面试题,详情请看图,谢谢给位了 解决方案 这谁家的面试题,03都没有2月份,怎么结果会有2月份,而且table2就是摆设 sql可以下面这样,就是一个行列转置,用case when 以下是sqlserver的 select dep , sum(case mon when '一月份' then score else null end) as 一月份 , sum(case mon when '二月份' then score else null end) as 二月份, sum

求助 SQL 语句有问题, 大家帮忙看看

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceBLL{publicclassDaoCustomer{publicboolinsertDB(Model.TBLCustomertbCustomer){stringUpdateSql=string.Format("insertintoTBLCustomer(company,level,faren,addr,youbi

sql条件语句-新手求教sql语句求助,group_by

问题描述 新手求教sql语句求助,group_by 现在是这样的,要求根据某一天,统计poster_code的任务,任务类型根据post_type分为1和21的时候为匿名数量为quantity里的数量,2的时候实名也为quantity里的数量结果就是根据日期统计poster_code的实名和匿名的数量,日期不能重复,新手求赐教,写了好久好久写不出来,求教各位怎么写_ 解决方案 刚才CASE语句漏了END,补上 SELECT poster_code post_date SUM(CASE poste

oracle数据库,SQL语句怎么写,求助

问题描述 oracle数据库,SQL语句怎么写,求助 如果选择的时间间隔是:"1年" 那个就将每年的最后一个数据显示出来 如果选择的时间间隔是:"1月" 那个就将每月的最后一个数据显示出来 如果选择的时间间隔是:"1日" 那个就将每天的最后一个数据显示出来 如果选择的时间间隔是:"1时" 那个就将每小时的最后一个数据显示出来 oracle数据库,SQL语句怎么写,求助 解决方案 按年等日期分组,取每组事件最大的. 解决方案二:

这两个sql语句怎么写?求助。

问题描述 这两个sql语句怎么写?求助. 学生表 : 学生id 学生姓名 1 小红 2 小明 3 小石 课程表: 课程id 课程名称 课程老师 1 语文课 王老师 2 数学课 程老师 3 英语课 刘老师 选课表: 学生id 课程id 分数 1 1 65 1 2 58 1 3 90 2 2 80 3 1 50 3 2 20 3 3 40 1.请查出选择了数学和英语两门课程的学生名字. 2.请查出有2门课程以上不及格的学生的名字,60分及格. 解决方案 假设你的三个表分别是 学生表S(SID,SNa

java-新手求助:sql语句,从多个表中取出最新时间的记录,组成一个新表

问题描述 新手求助:sql语句,从多个表中取出最新时间的记录,组成一个新表 解决方案 mysql的实现: insert into zongbiao(id, name ,vd,co2,wendu,time) select t1.id,t1.name,t1.vd,t2.co2,t2.wendu,t2.time from biao1 t1 join biao2 t2 on(t1.id=t2.id) order by t2.time desc limit 1; 解决方案二: 1.mysql和oracle

查询语句很复杂-mysql由四张表查出一张新的表,sql语句太复杂,求助!!!!

问题描述 mysql由四张表查出一张新的表,sql语句太复杂,求助!!!! 我要查出学生的学号,班级,姓名,选课题目,指导老师,下面是4张表的结构: 1. 学生信息表(tstudentInfo):ID,class,name 2.老师信息表(tteacherInfo):ID,name 3.课题表(tproject):teacherID ,projectID,projectName 4选课信息表(tchoiceInfo):studentID,firWish,secWish,firState,secT

sql-关于SQL语句查询求助,是否可以实现

问题描述 关于SQL语句查询求助,是否可以实现 select (case when a.iscashvirtual = '1' then 'type1' when a.isbillvirtual = '1' then 'type2' else case when a.deposittype = '1' then 'type3' when a.deposittype = '2' then 'type4' when a.deposittype = '3' then 'type5' else '其他'

这句SQL语句是什么意思啊!紧急求助

问题描述 这句SQL语句是什么意思啊!紧急求助GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOIFNOTEXISTS(SELECT*FROMdbo.sysobjectsWHEREid=OBJECT_ID(N'[dbo].[uf_getsysid]')ANDxtypein(N'FN',N'IF',N'TF'))BEGINexecutedbo.sp_executesql@statement=N'CREATEFUNCTION[dbo].[uf_getsysid](