報表結構 1月份 到課率 統計表
學生名,課堂數,簽到數,到課率
表格結構
補充說明:
統計表說明:(歷史統計表)
Schema (MySQL v5.6)
CREATE TABLE T
(`課堂名` varchar(6), `日期` varchar(4), `學生名` nvarchar(5), `簽到` int)
;
INSERT INTO T
(課堂名, 日期, 學生名, `簽到`)
VALUES
('class1', 'xxxx', N'王小明', 1),
('class2', 'xxxx', N'王小明', 0),
('class3', 'xxxx', N'王小明', 0),
('class3', 'xxxx', N'李大強', 1),
('class4', 'xxxx', N'王小明', 1),
('class4', 'xxxx', N'李大強', 1),
('class1', 'xxxx', N'李大強', 1),
('class2', 'xxxx', N'李大強', 1)
;
/*
Result:
學生名,課堂數,簽到數,到課率
李大強. 4 . 4 . 100%
王小明. 4 . 2 . 50%
*/
Query #1
select 學生名,count(distinct `課堂名`) 課堂數,sum(`簽到`) 簽到數
, Concat(ROUND(sum(`簽到`)*1.0/count(`簽到`)*1.0,2)*100,'%') 到課率
from T
group by 學生名;
學生名 | 課堂數 | 簽到數 | 到課率 |
---|---|---|---|
李大強 | 4 | 4 | 100.00% |
王小明 | 4 | 2 | 50.00% |
我也練習一下~
這是MSSQL版本XD
declare @tab table(
課堂名 nvarchar(50)
, 日期 date
, 學生名 nvarchar(50)
, 簽到 int
)
insert into @tab
values('AA','2019/4/1','王小明',1)
,('BB','2019/4/2','王小明',0)
,('AA','2019/4/1','李大強',1)
,('BB','2019/4/2','李大強',1)
select 學生名
,count(0) 課堂數
,sum(簽到) 簽到數
,CONVERT(VARCHAR,CONVERT(DECIMAL(5,2),100.0 * sum(簽到) / count(0))) + '%' AS 到課率
from @tab
group by 學生名