据我了解 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?
Full Table
功能MAX
, MIN
等应用于文本列时使用字典顺序。因此,您的 MAX(type) 将返回“Printer”而不是“PC”,因为“Printer”按字母顺序位于(大于)“PC”之后。
请注意,在您的第一个查询中,条件HAVING COUNT(distinct type) = 1
意味着只能有一个type
每个组的值。这MAX(type)
使用 select 子句的原因很简单type
不能在选择中使用,因为它不在GROUP BY
clause.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)