查询在st1公司于2018年制作的电影中出演的影星

本文介绍了如何使用SQL查询从StarsIn表中获取特定年份和电影公司的演员列表。通过JOIN操作结合Movie和StarsIn表,利用外键约束确保数据一致性。示例查询展示了获取2018年由st1电影公司制作电影的演员。
摘要由CSDN通过智能技术生成
表结构
CREATE TABLE Movie              
(  title CHAR(20) NOT NULL,     --电影名称
  year INT NOT NULL,            --拍摄年份
  length INT ,                  --长度
  inColor BIT DEFAULT 1,        --是否彩色
  studioName CHAR(20),          --所属电影公司
  producerCertID CHAR(10),      --制片人
  PRIMARY KEY (title,year), 
);

CREATE TABLE StarsIn                      
(  movieTitle CHAR(20),                   --电影名称
  movieYear INT ,                         --拍摄年份
  starName CHAR(20),                      --演员姓名
  PRIMARY KEY(movieTitle,movieYear,starName),
  FOREIGN KEY(movieTitle, movieYear) REFERENCES Movie(title,year) 
);

表样例

Movie表:

titleyearlengthinColorstudioNameproducerCertID
M120181001st10001
M220181001st10002
M320191001st20003
M420171001st20004
M520141001st20004
M620151001st20004
M72018951st20003

StarsIn表:

movieTitlemovieYearstarName
M12018S1
M22018S1
M32019S2
M42017S3
M32019S3
M32019S4
M72018S2
输出样例:
starName
S1
SELECT distinct starName   #distinct:确保数据大量时输出不同的结果
FROM StarsIn
WHERE movieYear=2018 AND movieTitle IN (SELECT title 
					                    FROM Movie
					                    WHERE studioName='st1' and year=2018); 

第二个条件里的year限制也很重要,本人认为是由于Movie表里是title和year两个属性联合做主码,而StarsIn表里参照的外码是Movie里的主码因此 限制条件要特别声明年份

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,可以使用下面的代码计算 `fsk_filt` 和 `st1` 的误码率: ```matlab % 生成随机比特序列 N = 10000; % 比特序列长度 data = randi([0 1], N, 1); % 随机生成 0 和 1 的比特序列 % FSK 调制 fc1 = 1000; % 第一个载频频率 fc2 = 2000; % 第二个载频频率 fs = 8000; % 采样率 T = 1/fs; % 采样时间间隔 t = 0:T:(N/fs)-T; % 时间向量 s = fskmod(data, fc1, fc2, fs); % FSK 调制 % 信道加噪声 EbNo = 10; % 信噪比 snr = EbNo + 10*log10(log2(numel(unique(data)))); % 转换为信噪比 noisy_signal = awgn(s, snr, 'measured'); % 加入高斯白噪声 % FSK 解调 f1 = fskdemod(noisy_signal, fc1, fs); % 解调得到第一个载频信号 f2 = fskdemod(noisy_signal, fc2, fs); % 解调得到第二个载频信号 fsk_filt = medfilt1(f1-f2, 3); % 差分后进行值滤波 % 误码率计算 error = sum(abs(fsk_filt-data))/N; % 计算 FSK 误码率 disp(['FSK 误码率:', num2str(error)]); % 显示 FSK 误码率 % ST1 解调 [b, a] = butter(6, 2*fc1/fs, 'low'); % 低通滤波器设计 st1 = filtfilt(b, a, noisy_signal); % 进行滤波 st1 = st1(1:T*fs:end); % 降采样 % 误码率计算 error = sum(abs(st1-data(1:length(st1))))/length(st1); % 计算 ST1 误码率 disp(['ST1 误码率:', num2str(error)]); % 显示 ST1 误码率 ``` 这段代码首先生成了一个随机比特序列 `data`,然后进行 FSK 调制得到调制信号 `s`,加入高斯白噪声后得到有噪声的信号 `noisy_signal`。接着进行 FSK 解调,差分后再进行值滤波得到 `fsk_filt`,计算 FSK 误码率并显示。然后进行 ST1 解调,滤波后进行降采样得到 `st1`,计算 ST1 误码率并显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@这个编程我不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值