2011-03-01 93 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