数据库需要跟踪有关网站注册用户的信息以及他们上传、查看和评分的视频。每个上传的视频都被放入一组预定义的内容类别中。一个用户可以多次观看同一个视频;他们可能会在每次观看视频时给予不同的评分,或者他们可能根本不评分。
为了赚钱,视频共享服务依赖于广告产生的收入。当用户观看视频时,通常(但不总是)在视频开始之前向他们展示广告。任何用户都可以创建一个广告并支付固定的总价格,以使其显示指定的次数(想要的观看次数)。广告主可以通过为其广告指定一个或多个内容类别,将其广告定位于具有相关兴趣的用户;广告更有可能与这些选定类别的视频一起显示。出于会计和统计目的,数据库会跟踪显示广告的时间以及用户是否点击了广告。
一些上传了许多高质量视频的多产用户可能会被邀请加入收益分享合作伙伴关系,在这种合作伙伴关系中,他们从上传的视频中显示的广告中获得一小部分收入。
我在 MySql 中创建了以下数据库:
用户(用户名、密码、姓名、电子邮件、注册日期)
ViDEOS (video_id,title,uploaded_by,uploaded_at,category)
ADVERTISEMENTS (ad_id,advertiser,price,views_wanted)
Ad_Target_Categories (ad_id,category)
VIEWS(用户、视频、viewed_at、评级、ad_shown、ad_clicked)
PARTNERS(用户名、revenue_share)
我已经使用 SQL 语句创建了数据库:
create table Users
(
username varchar(400) not null,
password varchar(400) not null,
name varchar(400) not null,
email varchar(400) not null,
date_registered date,
primary key(username)
);
create table Videos
(
video_id varchar(400) not null,
title varchar(400) not null,
uploaded_by varchar(400) not null,
uploaded_at varchar(400) not null,
category varchar(400) not null,
primary key(video_id),
foreign key(uploaded_by) references Users(username)
);
create table Advertisements
(
ad_id varchar(400) not null,
advertiser varchar(400) not null,
price varchar(400) not null,
views_wanted varchar(400) not null,
primary key(ad_id),
foreign key(advertiser) references Users(username)
);
create table Ad_Target_Categories
(
ad_id varchar(400) not null,
category varchar(400) not null,
primary key(ad_id,category),
foreign key(ad_id) references Advertisements(ad_id)
);
create table Views
(
user varchar(400) not null,
video varchar(400) not null,
viewed_at varchar(400) not null,
rating varchar(400) not null,
ad_shown varchar(400) not null,
ad_clicked varchar(400) not null,
primary key(user,video,viewed_at),
foreign key(user) references Users(username),
foreign key(video) references Videos(video_id)
);
create table Partners
(
username varchar(400) not null,
revenue_share varchar(400) not null,
primary key(username),
foreign key(username) references Users(username)
);
0) 列出每条广告的广告 ID、广告商名称和电子邮件,每千次展示费用(CPM,每千次观看所支付的价格)低于 7 美分。
这个查询是否正确:?
select *from ad_id,advertiser,email
from advertisements,users
where price <0.07;
考虑到上述数据库,我需要帮助编写以下 SQL 查询
1)找出针对每个类别的所有广告的总价格。(针对多个类别的广告计入其针对的每个类别。)
2) 列出所有广告商的姓名,这些广告商的至少一个广告的展示次数超过了他们的要求。每个广告商不得多次列出。
3) 找出 2012 年 6 月收入最高的三个合作伙伴。列出他们的姓名和 2012 年 6 月的收入。合作伙伴的报酬是根据他们的收入分成和展示的每个广告来支付的。
4) 查找自上传后的前两周以来未获得任何观看次数的所有视频。对于每个此类视频,请提供上传该视频的上传用户的名称、视频标题以及上传日期和时间。
5) 按最新会员注册日期顺序列出所有用户的姓名。对于至少上传了一个视频的用户,还要给出他们观看次数最多的视频的观看次数。
6)找出平均评分最低的五个视频,尽管他们自己的上传者评分最高,评分为 5。列出他们的视频 ID、标题和平均评分。