【问题标题】:SQLiteman help needed需要 SQLiteman 帮助
【发布时间】:2015-09-30 09:43:04
【问题描述】:

您好,我需要一些关于大学作业的帮助,我需要回答 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 只允许一个结果”- 我不确定这意味着什么或我需要做些什么来修复它?

Q 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 个)。

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

【问题讨论】:

  • 如果您向我们展示数据库架构会有所帮助。

标签: sql sql-server sqlite


【解决方案1】:

第一个是:

    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弄得有些混乱。

【讨论】:

  • 我认为第一部分不会回答她的问题……她需要每个标题的格式数量,因此必须加入 video_format 表。
【解决方案2】:

问题 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
)

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2017-10-05
    • 2017-03-23
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多