据我了解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
Run Code Online (Sandbox Code Playgroud)
我不明白max的功能 - 它算什么?我尝试了一个更简单的查询来理解它,但它只是让它变得更加困难.
SELECT maker,
MAX(type) AS type, COUNT(type) AS QTY
FROM product
GROUP BY maker
ORDER BY maker
Run Code Online (Sandbox Code Playgroud)
返回的集合是
maker type QTY
A Printer 7
B PC 2
C Laptop 1
D Printer 2
E Printer 4
Run Code Online (Sandbox Code Playgroud)
在我看来MAX(类型)显示随机值,例如为什么制造商B的结果是PC而不是笔记本电脑?为什么E是打印机而不是PC?
全表

tro*_*dor 19
功能MAX,MIN等等.当应用到文本列使用词典顺序.因此,您的MAX(类型)将返回"打印机"而不是"PC",因为"打印机"按字母顺序位于(大于)"PC"之后.
请注意,在第一个查询中,条件HAVING COUNT(distinct type) = 1意味着type每个组只能有一个值.将MAX(type)在SELECT子句中使用,因为根本type无法选择使用,因为它不是在GROUP BY条款.
小智 6
在字符列中 MAX 查找整理序列中的最高值。在 PC 和笔记本电脑情况下:“P”符号位于“L”符号之后,因此 MAX 结果是 PC。打印机和 PC:第一个字母相同,但“r”符号在“C”之后,因此 MAX 结果是 Printer。
| 归档时间: |
|
| 查看次数: |
63359 次 |
| 最近记录: |