2 wojiushiwo945you wojiushiwo945you 于 2016.04.13 18:05 提问

sql表进行数据统计,由第一个表统计得到第二个表
sql

面试有一个这样的题目:一张教师表,记录了每一个老师在星期几有课,表结构为teacher

 id    week (星期几)  有课
 1     1          有
 1     1          有
 1     2          有
 1     3          有
 2     1          有
 2     2          有
 3     3          有
 3     3          有

怎么用sql统计称如下的表,每一天每位老师总共有多少课:

 id    星期一   星期二   星期三
 1      2            1          1
 2      1            1          0
 3      0            0          2

该怎么统计称下面这个表呢?面试官说可以用case when来统计。我想的是用group by先分组,然后再在组内进行统计,如果用mysql怎么统计呢?

2个回答

mix0313
mix0313   2016.04.14 12:32
已采纳
 select id,
sum(case   when week=1 then 1 else 0 end) as 星期一 ,
sum(case   when week=2 then 1 else 0 end) as 星期二 ,
sum(case   when week=3 then 1 else 0 end) as 星期三 
from 
teacher 
group by id
wojiushiwo945you
wojiushiwo945you 是不是sum统计是基于分组的呢?在每个分组内进行case when条件判断的。这个sql是对的。
2 年多之前 回复
jiushophy
jiushophy   2016.04.13 18:18

select id, week, count(1) from teacher group by week

wojiushiwo945you
wojiushiwo945you 为什么是group by week呢?你看我统计后的表的后面三个字段都是统计出来的啊。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SQL select关联表查询 统计另一个表合计
db_order 是记录订单的,  一个订单一条记录.(oid, 运费, 实收金额, 产品KEY.......) db_soid  是记录出售商品的 (id, 商品名称, 售价, 数量, 成本, 标识KEY)    这个标识KEY是跟order的产品KEY关联的. 一个订单可能出售多个商品, 所以db_soid有字段 标识KEY 跟 订单关联,  一件商品记录一条 当我们要统
mysql给数据统计做排名
1、问题描述目前有一个表tb_rank(PlayerID,PlayerName,Score) PlayerID是Primary key(主键);现在的需求是,希望在表tb_rank中再添加一列rankNum,这个rankNum记录的是Score的排名(根据分数做降序排列)。2、初步解决方法(不考虑Score相同的情况)问题分析:    经过分析,我们可以将此问题大概分解为以下三个子问题:(1) 在...
一条sql语句分别统计出来两张表的数据
http://bbs.csdn.net/topics/380114638 come表,nocome表,分别有字段tid,然后我要从come表和nocome表分别统计出来tid的次数。统计的结果要是这样 |——————————————————————————————————————————————|| |   tid                          count(com
存储过程里添加信息到第一个表时得到第一个表的新增ID,并用此ID添加信息到第二个表
ALTER PROCEDURE [dbo].[AddBbsTitle](@UserId uniqueidentifier, @UserName nvarchar(256), @Cid int, @Title nvarchar(500), @TitleColour nvarchar(50), @Content ntext, @IsTitle bit)ASdeclare @TitleId int  /
统计数据处理用数据库表的设计比较
统计数据处理用数据库的设计思考统计数据处理过程大致分为:数据录入、数据审核和修改、数据汇总三个主要步骤或阶段,一般还包括数据的导入和导出。我们在设计用于统计数据处理的数据库时需要考虑各个阶段的用户需求特点,并进行相应的设计。数据录入阶段:这一阶段的特点是大量数据的录入,每次插入的数据量不一定很大,但有大量的提交。数据审核和修改:这一阶段的特点是批量数据的处理,产生审核错误清单,
通过SQL case when语法实现统计SQL的纵表转横向
需求描述:       有一张业绩统计表(t_user_performance),表结构如下: 人员ID user_id 业绩类型 performance_type 业绩金额 performance_value 时间 create_date
一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值
 一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值【http://hi.baidu.com/zhuwenfeng518/blog/item/55d96a4b0929f82a08f7eff7.html】非常实用的工具,由于是初学者,所以在做的过程中碰到一些问题,通过查询资料,把这些解决问题的过程发上来,一方面方便自己以过查询,另一方面能够积累知识,
Excel 数据统计小技巧
快速定位与选择快速定位快捷键:可以快速定位到表头表尾 快速选择一列: 快速填充公式方法 奇偶行提取奇数行: `=INDIRECT 将两个或更多个单元格的文本合并到一个单元格 合并同类项(去除重复项)数据并求和 SUMIF 相关性分析 =CORREL
SQL查询,2个表,第一个表一行多个标题,第二个表1列,联合查询变成一个表,1行多个标题变成多个列
2个表,一个产品表product,一个订单表 product如下 id productname price 1 桂花糕 20 2 无水蛋糕 15 3 枣糕 8 订单表如下 订单号 下单人 桂花糕数量 桂花糕单价 桂花糕折扣 桂花糕总价(后面是无水,枣糕) 1
sql两个表结果计算后合并数据
两个表结果合并: 查询语句1 Plain Text code ? 1  select unit,count(*)as number from archives_management group by unit 查询语句2 Plain Text code ? 1