gpt4 book ai didi

sql - 非数字列中的SQL MAX函数

转载 作者:行者123 更新时间:2023-12-04 10:24:39 26 4
gpt4 key购买 nike

据我了解MAX函数,它将返回给定列的最大值。对于数字值(例如,薪水列),我很清楚-这是我在教程中找到的唯一应用程序。但是,我有一个问题要弄明白在非数字列的情况下它是如何工作的。

我的问题来自此练习(在sql-ex.ru上)

找出仅生产相同类型模型的制造商,并且这些模型的数量超过1。
表“产品”包括有关制造商,型号和类型(“PC”,“笔记本电脑”或“打印机”)的信息。
解决方案之一是:

SELECT maker,
MAX(type) AS type
FROM product
GROUP BY maker
HAVING COUNT(DISTINCT type) = 1
AND COUNT(model) > 1

我不了解max的功能-它算什么?我尝试了一个更简单的查询来理解它,但这只会使它变得更加困难。
SELECT maker,
MAX(type) AS type, COUNT(type) AS QTY
FROM product
GROUP BY maker
ORDER BY maker

返回的集是
maker  type      QTY
A Printer 7
B PC 2
C Laptop 1
D Printer 2
E Printer 4

在我看来,MAX(type)显示一个随机值,例如为什么对于制造商B,结果是PC,而不是笔记本电脑?为什么对于E是打印机而不是PC?

全表

最佳答案

函数MAXMIN等在应用于文本列时使用字典顺序。因此,您的MAX(type)将返回“Printer”而不是“PC”,因为“Printer”按字母顺序位于(大于)“PC”之后。

注意,在您的第一个查询中,条件HAVING COUNT(distinct type) = 1意味着每个组只能有一个type值。之所以使用select中的MAX(type)子句,是因为type不能在SELECT中使用,因为它不在GROUP BY子句中。

关于sql - 非数字列中的SQL MAX函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558620/

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