我这里有一个跨国公司给我的SQL培训题,给大家分享一下(2)--答案

希望大家把效率更高的代码贴出来,和我分享,这是我们几个培训人员写的,因为公司不给所谓的“答案”,我们也不知道还有没有效率更好的SQL脚本

 

create table picture
(
id int(10) not null auto_increment primary key,
name varchar(20) not null,
path varchar(100) not null
);
create table viewlog
(
id bigint(10) not null auto_increment primary key,
picture_id int(10)not null,
view_date_time datetime,
foreign key(picture_id) references picture(id)
);


Question1
//************************************
1.1.1 select name,count(picture_id) as Access_Count from picture left join (select * from viewlog where view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02') as newviewlog
on(picture.id=newviewlog.picture_id)  group by picture_id order by Access_Count desc(low)

1.1.2 select name,count(picture_id) as Access_Count from picture left join viewlog on(picture.id=viewlog.picture_id and view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02')
group by picture_id order by Access_Count desc(--)(55.28)

1.1.3 select name,count(picture_id) as Access_Count
 from picture left join viewlog on(view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02' and picture.id=viewlog.picture_id )
 group by picture_id order by Access_Count desc(best)(54.58)

1.1.4 select name,count(picture_id) as Access_Count
 from picture left join viewlog on(view_date_time >= '2000-01-01 00:00:00' and  view_date_time <= '2000-01-01 00:00:02' and picture.id=viewlog.picture_id )
 group by picture_id order by Access_Count desc(best)(54.92)
//************************************
1.2.1 select name,count(picture_id) as Access_Count
 from picture left join viewlog on(view_date_time between '2000-01-01 00:00:01' and '2000-01-01 00:00:03' and picture.id=viewlog.picture_id )
 group by picture_id order by Access_Count desc


Qestion2
//************************************
2.1.1 select name,count(view_date_time) as Access_Count
 from picture left join viewlog on(picture.id = viewlog.picture_id )
 where viewlog.view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02' 
 group by picture.name;--(0.27)

2.1.2 select name,count(view_date_time) as Access_Count
 from picture join viewlog on(viewlog.view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02' and picture.id = viewlog.picture_id )
 group by picture.name;--(0.27)
//************************************
2.1. select name,count(view_date_time) as Access_Count
 from picture left join viewlog on(picture.id = viewlog.picture_id )
 where viewlog.view_date_time between '2000-01-01 00:00:01' and '2000-01-01 00:00:03' 
 group by picture.name;
//************************************
2.1.1 select name,count(name) as Access_Count from picture left join viewlog on(picture.id = viewlog.picture_id ) where viewlog.view_date_time between '2000-01-01 00:00:00' and '2000-01-01 00:00:02'   group by name;

2.2.1  select name,count(picture_id) as Access_Count from picture left join viewlog on(picture.id=viewlog.picture_id ) where view_date_time between '2000-01-01 00:00:01' and '2000-01-01 00:00:03' group by picture_id order by Access_Count desc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值