案例一:
按天汇总学生每天学习时长
create table stu
(
day VARCHAR2(20),
name VARCHAR2(20),
len NUMBER
);
INSERT INTO stu VALUES ('01', '张三', 3);
INSERT INTO stu VALUES ('01', '李四', 4);
INSERT INTO stu VALUES ('02', '张三', 1);
INSERT INTO stu VALUES ('02', '李四', 5);
INSERT INTO stu VALUES ('03', '张三', 8);
INSERT INTO stu VALUES ('03', '李四', 6);
INSERT INTO stu VALUES ('04', '张三', 3);
INSERT INTO stu VALUES ('04', '李四', 2);
INSERT INTO stu VALUES ('05', '张三', 2);
INSERT INTO stu VALUES ('05', '李四', 5);
INSERT INTO stu VALUES ('06', '张三', 7);
INSERT INTO stu VALUES ('06', '李四', 2);
INSERT INTO stu VALUES ('07', '张三', 2);
INSERT INTO stu VALUES ('07', '李四', 3);
INSERT INTO stu VALUES ('08', '张三', 1);
INSERT INTO stu VALUES ('08', '李四', 3);
INSERT INTO stu VALUES ('09', '张三', 5);
INSERT INTO stu VALUES ('09', '李四', 1);
INSERT INTO stu VALUES ('10', '张三', 6);
INSERT INTO stu VALUES ('10', '李四', 7);
select day,name,len from stu


select *
from (SELECT name, len, day FROM stu) t
pivot(max(len)
for day in('01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
'13',
'14',
'15'))
案例二:
按天汇总学生每天学习时长(分上下午汇总)
create table stu
(
day VARCHAR2(20),
name VARCHAR2(20),
len NUMBER
);
INSERT INTO stu VALUES ('01', '张三', 1);--上午
INSERT INTO stu VALUES ('01', '张三', 2);--下午
INSERT INTO stu VALUES ('01', '李四', 2);--上午
INSERT INTO stu VALUES ('01', '李四', 2);--下午
INSERT INTO stu VALUES ('02', '张三', 1);
INSERT INTO stu VALUES ('02', '李四', 3);
INSERT INTO stu VALUES ('02', '李四', 2);
INSERT INTO stu VALUES ('03', '张三', 5);
INSERT INTO stu VALUES ('03', '张三', 3);
INSERT INTO stu VALUES ('03', '李四', 2);
INSERT INTO stu VALUES ('03', '李四', 4);
INSERT INTO stu VALUES ('04', '张三', 3);
INSERT INTO stu VALUES ('04', '李四', 2);
INSERT INTO stu VALUES ('05', '张三', 2);
INSERT INTO stu VALUES ('05', '李四', 5);
INSERT INTO stu VALUES ('06', '张三', 7);
INSERT INTO stu VALUES ('06', '李四', 2);
INSERT INTO stu VALUES ('07', '张三', 2);
INSERT INTO stu VALUES ('07', '李四', 3);
INSERT INTO stu VALUES ('08', '张三', 1);
INSERT INTO stu VALUES ('08', '李四', 3);
INSERT INTO stu VALUES ('09', '张三', 5);
INSERT INTO stu VALUES ('09', '李四', 1);
INSERT INTO stu VALUES ('10', '张三', 6);
INSERT INTO stu VALUES ('10', '李四', 7);
select day,name,len from stu


select *
from (SELECT name, len, day FROM stu) t
pivot(sum(len)
for day in('01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
'13',
'14',
'15'))
本文通过两个案例展示了如何使用SQL语句按天汇总学生的每日学习时长,并进一步按上下午进行细分汇总。案例中创建了一个名为'stu'的表来记录学生姓名、日期和对应的学习时长,并使用了Pivot操作来实现多维度的数据汇总。
1482

被折叠的 条评论
为什么被折叠?



