2011-03-01 89 views
0

我建立下表問題的MAX()和MIN()函數

create table Interiors(
no integer, 
name varchar, 
type varchar, 
dateofstock datetime, 
price decimal(6,3), 
discount numeric(6,2)) 

我要解決這兩個查詢。

  1. 按分組類型顯示類型,價格總和和平均折扣爲「嬰兒牀」。
  2. 通過將類型分組爲「嬰兒牀」來顯示價格的類型,最大值和最小值。

我爲每個響應寫了以下stmts。


  1. 選擇類型,從總和室內組(價格),AVG(折扣)由 '嬰兒牀'。
  2. 選擇類型,最大(價格),分鐘(價格)從內飾組由'嬰兒牀'。

我得到了下面的錯誤同爲都喜歡那類型不是聚集的樂趣。或者它沒有GROUP BY'子句。我應該怎麼做才能解決這個問題。

+0

這是功課嗎?如果它是... – 2011-03-01 11:04:44

回答

1

組由'嬰兒牀'。

您不能按某個名稱分組,您必須按列名稱進行分組。例如:

select type, sum(price), avg(discount) from Interiors group by type 
or 
select type, sum(price), avg(discount) from Interiors where type = 'baby cot' group by type 
+0

它正在工作,但只有當所有類型都是'嬰兒牀'時,它纔會在不同記錄中輸入另一個值時顯示正確的輸出。 – Pooja 2011-03-03 13:18:21

1

您需要按字段名稱分組,而不是內容。如果您希望僅包含類型爲「嬰兒牀」的數據,則可以將其包含在WHERE子句中。例如...

SELECT 
    type, 
    SUM(price) AS "sum", 
    AVG(price) AS "avg", 
    MAX(price) AS "max", 
    MIN(price) AS "min" 
FROM 
    Interiors 
WHERE 
    type = 'baby cot' 
GROUP BY 
    type 
+0

如果WHERE子句僅限於一種類型,那麼以後不需要進行分組。 – 2011-03-01 11:16:19

+0

雖然不需要*,但最好是明確而完整,而不要使用簡寫。特別是在嘗試傳達語法等的答案方面。 – MatBailie 2011-03-01 11:48:04

+0

這樣做的顯式方式也意味着您不需要在SELECT的第一個字段中指定'Baby Cot',只需將* type *字段名稱。這意味着,當代碼被chaged來搜索不同的類型時,它只需要在一個地方進行更新。 – MatBailie 2011-03-01 11:49:59