拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 显示最高值细节的最佳方式是什么

显示最高值细节的最佳方式是什么

白鹭 - 2022-03-11 1964 0 0

您好,我想知道什么是正确的方法,我被要求提供有关去世最年长的艺术家的信息。

FROM ListOfArtists
WHERE (DateDeceased - DateofBirth) = (SELECT 
            MAX(DateDeceased - DateofBirth)
        FROM ListOfArtists);

或者:

SELECT *
FROM ListOfArtists
ORDER BY (DateDeceased - DateofBirth) DESC
LIMIT 1

提前致谢!

uj5u.com热心网友回复:

如果我完全过度考虑这一点,我深表歉意,但我无法抗拒指出这一点。

你的第一条评论表明你只存盘出生和死亡的年份 -

艺术家ID 国籍 逝世日期 出生日期
1 波提切利 桑德罗 意大利语 1510 1445
2 达芬奇 莱昂纳多 意大利语 1519 1452
3 博纳罗蒂 米开朗基罗 意大利语 1564 1475
4 博内斯特尔 切斯利 美国人 1986年 1888年
5 夏加尔 马克 法语 1985年 1887年

您的第一个查询 -

SELECT *
FROM ListOfArtists
WHERE (DateDeceased - DateofBirth) = (SELECT 
            MAX(DateDeceased - DateofBirth)
        FROM ListOfArtists);

回传 -

艺术家ID 国籍 逝世日期 出生日期
4 博内斯特尔 切斯利 美国人 1986年 1888年
5 夏加尔 马克 法语 1985年 1887年

您的第二个查询 -

SELECT *
FROM ListOfArtists
ORDER BY (DateDeceased - DateofBirth) DESC
LIMIT 1

回传 -

艺术家ID 国籍 逝世日期 出生日期
5 夏加尔 马克 法语 1985年 1887年

现在考虑您的表格的以下版本,但存盘完整的出生和死亡日期 -

艺术家ID 国籍 逝世日期 出生日期
1 波提切利 桑德罗 意大利语 1510-05-17 1445-01-01
2 达芬奇 莱昂纳多 意大利语 1519-05-02 1452-04-15
3 博纳罗蒂 米开朗基罗 意大利语 1564-02-18 1475-03-06
4 博内斯特尔 切斯利 美国人 1986-06-11 1888-01-01
5 夏加尔 马克 法语 1985-03-28 1887-07-07

您的第一个查询回传 -

艺术家ID 国籍 逝世日期 出生日期
4 博内斯特尔 切斯利 美国人 1986-06-11 1888-01-01

您的第二个查询回传 -

艺术家ID 国籍 逝世日期 出生日期
4 博内斯特尔 切斯利 美国人 1986-06-11 1888-01-01

更好的查询是 -

SELECT *
FROM ListOfArtists
ORDER BY DATEDIFF(DateDeceased, DateofBirth) DESC
LIMIT 1;

回传 -

艺术家ID 国籍 逝世日期 出生日期
4 博内斯特尔 切斯利 美国人 1986-06-11 1888-01-01

以下查询说明了两者之间的区别 -

SELECT *, YEAR(DateDeceased) YearDied, YEAR(DateofBirth) YearBorn, (DateDeceased - DateofBirth), DATEDIFF(DateDeceased, DateofBirth) DaysOld, FLOOR(DATEDIFF(DateDeceased, DateofBirth) / 365.25) YearsOld
FROM ListOfArtists;
艺术家ID 国籍 逝世日期 出生日期 年死 出生年 (死亡日期 - 出生日期) 旧日
1 波提切利 桑德罗 意大利语 1510-05-17 1445-01-01 1510 1445 650416 23876 65
2 达芬奇 莱昂纳多 意大利语 1519-05-02 1452-04-15 1519 1452 670087 24487 67
3 博纳罗蒂 米开朗基罗 意大利语 1564-02-18 1475-03-06 1564 1475 889912 32490 88
4 博内斯特尔 切斯利 美国人 1986-06-11 1888-01-01 1986年 1888年 980510 35955 98
5 夏加尔 马克 法语 1985-03-28 1887-07-07 1985年 1887年 979621 35693 97

这是一个SQL 小提琴

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *