gpt4 book ai didi

mysql - SQL - 找出表中最大的 5 个数字

转载 作者:行者123 更新时间:2023-11-29 07:19:50 25 4
gpt4 key购买 nike

我有一些表,其中都包含有关书籍的信息,例如标题、页数、价格、版税等。我想使用这些表格来查找版税率最高的 5 位作者。

这是我的表格:

CREATE TABLE authors
(
au_id CHAR(3) NOT NULL,
au_fname VARCHAR(15) NOT NULL,
au_lname VARCHAR(15) NOT NULL,
phone VARCHAR(12) ,
address VARCHAR(20) ,
city VARCHAR(15) ,
state CHAR(2) ,
zip CHAR(5) ,
CONSTRAINT pk_authors PRIMARY KEY (au_id)
)ENGINE = InnoDB;


CREATE TABLE royalties
(
title_id CHAR(3) NOT NULL,
advance DECIMAL(9,2) ,
royalty_rate DECIMAL(5,2) ,
CONSTRAINT pk_royalties PRIMARY KEY (title_id)
)ENGINE = InnoDB;

到目前为止,我只能选择最高的版税率。我尝试使用 TOP (5) 函数,但这对我不起作用。我的代码如下。

SELECT au_fname, au_lname
FROM authors
WHERE au_id IN
(SELECT au_id
FROM title_authors
WHERE title_id IN
(SELECT title_id
FROM royalties
WHERE royalty_rate = (SELECT MAX(royalty_rate) FROM royalties)))

我怎样才能找到拥有最高版税率的 5 位作者?

最佳答案

MySQL 不支持 TOP 关键字。 MySQL 以外的一些数据库(例如 SQL Server、Teradata 等)确实支持该语法。

MySQL 通过 LIMIT 关键字提供类似的功能。

 SELECT t.foo
FROM mytable t
ORDER BY t.bar DESC
LIMIT 5
<小时/>

就获得结果而言,我强烈建议您使用连接操作:

  SELECT a.au_fname
, a.au_lname
FROM authors a
JOIN title_authors t
ON t.au_id = a.au_id
JOIN royalties r
ON r.title_id = t.title_id
ORDER BY r.royalty_rate DESC
LIMIT 5

请注意,如果某个作者拥有两个(或多个)royalty_rate 最高的作品,则该作者将被多次返回。

如果您想要五个不同作者,请找到每个作者的最高版税率,并按此排序。

  SELECT a.au_fname
, a.au_lname
FROM authors a
JOIN title_authors t
ON t.au_id = a.au_id
JOIN royalties r
ON r.title_id = t.title_id
GROUP BY a.au_id
ORDER BY MAX(r.royalty_rate) DESC
LIMIT 5

如果超过五位作者具有相同的最高版税率,那么其中哪五位作者是不确定的。您可以向 ORDER BY 子句添加其他表达式以使结果更具确定性。

   ORDER BY MAX(r.royalty_rate) DESC, a.id DESC

关于mysql - SQL - 找出表中最大的 5 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com