2011-06-08 124 views
3

我有一个关于最大的一些问题()sql:Max()-1是什么意思?

  1. 是什么下面的查询是什么意思?

    SELECT MAX(X) -1 FROM T

  2. 我了解到,语法应为: SELECT (MAX(X) -1) as max_minus_one FROM T 没有?

  3. 聚合函数(即Max())后面必须跟着GRUOP BY

回答

4

MAX(x) - 1只是表示表中x的最大值减1。

您总是可以使用括号和别名(as some_cool_name)使事情更清楚,或更改结果中的名称。但第一个语法是完全有效的。

你只需要GROUP BY,如果你打算选择什么更多的汇总值,这样,例如:

select 
    userName, 
    avg(age) 
from 
    users 
group by 
    userName 
+1

使用别名 将返回一列和一行的表:max_minus_one和结果值 while w/o别名我会简单地得到结果值 - 不在表中? 我是否正确? – 2011-06-08 15:26:03

+0

集合函数(avg,max,sum等)和* alias *是两个完全不相关的东西。 使用别名会*名*聚合函数的其他未命名的结果,这在许多情况下很有用。 但是'SELECT'语句的结果总是一个结果集,而不是一个表,也不是一个标量值(单个值),即使它只有一行一列。 – 2011-06-08 15:37:05

1

那将意味着“比列X的最大值一个都不能少”。 (a)不,那是添加一些东西。 (b)不,不是当你选择这样一个单一的列时。

2

SELECT MAX(X)-1

SELECT(MAX(X)-1)

是相同的。

在这种情况下,您不需要GROUP BY,因为您没有选择其他非聚合字段。

1

A.其税收的最大值和减去1

B.如果它只是一个agregate功能,则没有。如果你指定另一列,那么你必须在GROUP BY中使用它。

+0

如果我再指定两列,是否必须组合bu col1,col2? – 2011-06-08 15:36:05

+0

是的,您需要按聚合函数中未使用的所有列进行分组 – CristiC 2011-06-09 07:09:29