2011-06-08 194 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