【发布时间】:2019-09-23 16:16:00
【问题描述】:
我有一个代表音乐商店数据的数据库。 我想使用的表是(艺术家、专辑、曲目) 每张专辑都有一个专辑ID、标题和艺术家ID 每首曲目都有 TrackID、Milliseconds、albumID 和 name
嗯,你知道每张专辑都有很多曲目 我想计算专辑中所有歌曲的总和(以毫秒为单位)然后得到该总和的平均值以获得长度高于平均值的专辑。
我设法计算了每张专辑的长度,但我很难得到平均值。
我想生成一个这样的表。
---------------------------------------------------------------------
AlbumID | Tile | Milliseconds
---------------------------------------------------------------------
1- | |
2- | |
3- | |
...
10- | |
----------------------------------------------------------------------
Track样本表
TrackID | Name | AlbumId | Milliseconds
1 For Those About To Rock 1 343719
6 Put The Finger On You 1 205662
7 Let's Get It Up 1 233926
85 Cochise 10 222380
86 Show Me How to Live 10 277890
87 Gasoline 10 279457
88 What You Are 10 249391
89 Like a Stone 10 294034
99 Your Time Has Come 11 255529
100 Out Of Exile 11 291291
101 Be Yourself 11 279484
102 Doesn't Remind Me 11 255869
111 Money 12 147591
112 Long Tall Sally 12 106396
所以,限制 10 和轨道的长度
【问题讨论】:
-
使用
avg()?如果这还不够,请展示一个示例表(如 create table/insert 语句,以便轻松复制和粘贴)和您想要的结果。 -
你试过什么?你看过聚合函数吗?我们不是为你做作业。你用的是什么数据库?什么是“瓷砖”?你想要 10 的哪个限制?
-
guys avg() 函数不能像
avg(t.milliseconds)那样直接以毫秒为单位工作。因为在 Track 表上,我有许多具有相同专辑 ID 的曲目,所以我必须先将它们相加。 -
@danblack 我试过 ``` SELECT al.AlbumId, al.Title, sum(t.milliseconds) as allsum FROM Album al JOIN Track t on al.AlbumId=t.AlbumId GROUP by al .AlbumId HAVING allsum >= avg(allsum) LIMIT 10; ```
-
MySQL SQLite,我建议您编辑问题并仅标记您正在使用的数据库系统,如果您正在寻找适用于 SQLite 和 MySQL 的查询,您可以理想地删除这两个标签作为
sql标签或多或少用于跨数据库平台查询,因为该标签适用于 ANSI/ISO 有效的 SQL 查询。
标签: sqlite