需要SQLiteman帮助

时间:2015-09-30 09:43:05

标签: sql sql-server sqlite

嗨我需要一些单一作业的帮助,我需要回答2个问题: 1)列出以多种格式提供的视频标题以及每个标题可用的不同格式的数量。

我的查询是:

SELECT title
FROM video
WHERE video_id IN (
    SELECT video_id, COUNT(format_id) AS AvaliableFormats
    FROM video_format
    GROUP BY title
    HAVING COUNT(format_id) > 1);

但结果显示"查询错误:只有一个结果允许SELECT作为表达式的一部分" - 我不确定这意味着什么或我需要做些什么来修复它?

问2 5)列出平均费用(格式不超过2美元)的视频标题。

我的查询

SELECT title
FROM video
WHERE video_id IN (
    SELECT video_id
    FROM video_format   
GROUP BY title
HAVING AVG(cost) > 2);

但它只会产生一个结果(行应该是2)。

如果有人可以请求帮助,我真的非常感激!

2 个答案:

答案 0 :(得分:0)

第一个是:

    SELECT title FROM video WHERE video_id IN ( SELECT video_id FROM 

video_format GROUP BY title HAVING COUNT(format_id) > 1)

如果您使用的是IN,则只有一列可以在内部查询中,否则请使用Exist

第二名:

    SELECT title FROM video WHERE video_id IN 
( SELECT video_id FROM video_format
    GROUP BY video_in HAVING AVG(cost) > 2)

如果我理解正确并且视频中的标题与标题有关,那么group by会让您感到有些困惑。

答案 1 :(得分:0)

问题1

错误消息表示您无法在子查询中选择多个列。如果需要子查询中的列,请考虑使用连接。

SELECT v.title, vf.AvaliableFormats 
FROM video v 
Join 
(
SELECT video_id, COUNT(format_id) AS AvaliableFormats 
FROM video_format 
GROUP BY title 
HAVING COUNT(format_id) > 1
) vf on v.video_id = vf.video_id

问题2 尝试通过video_id而不是标题进行分组,两部不同的电影可以拥有相同的标题。

SELECT title FROM video 
WHERE video_id IN 
(
SELECT video_id 
FROM video_format
GROUP BY video_id 
HAVING AVG(cost) > 2
)