开发者社区 问答 正文

oracle的一个分组查询语句,怎么写呢?:报错

下面是农产品信息,共5张表:

市场       MARKET:      MARKET_ID,    TOWN_ID,    MARKET_NAME

区县       TOWN:        TOWN_ID,       TOWN_NAME;

农产品    PRODUCE:    PRODUCE_ID,   PRODUCE_NAME

销售类型 SELL_TYPE: SELL_TYPE_ID,  SELL_TYPE_NAME     (1 零售价,2批发价)

价格表  PRICE 中数据:

PRICE_ID,    MARKET_ID,    PRODUCE_ID,    SELL_TYPE_ID,    MONEY 产品价格

   1                  1                    1                      1                        10

   2                  1                    2                      2                        3.5

   3                  2                    3                      1                        6

我想查询 价格表 的 零售价平均数 和 批发价平均数,下面是我写的 错误sql语句:

select t.TOWN_NAME as '区县',
//实际不止p.SELL_TYPE_ID = '1'一个条件,还有m.MARKET_TYPE_ID = '1'等多个条件
case when p.SELL_TYPE_ID = '1' then avg(p.MONEY) end as '零售平均价',
case when p.SELL_TYPE_ID = '2' then avg(p.MONEY) end as '批发平均价'
from
PRICE p join MARKET m on p.MARKET_ID = m.MARKET_ID join PRODUCE pe on p.PRODUCE_ID = pe.PRODUCE_ID join TOWN t on t.TOWN_ID = m.TOWN_ID
where
p.PRODUCE_NAME = '菠菜'
group by
t.TOWN_ID;

下面是想要的查询效果: 区县                零售平均价     批发平均价

太原                      3.5                  3

太谷                      2.5                 2.2

临汾                 2.9             2.4
.......
这个查询语句怎么写呢?

展开
收起
kun坤 2020-06-09 15:21:46 455 分享 版权
1 条回答
写回答
取消 提交回答
  • 懒得直接给你答案,一直觉得这样不好,说下思路吧,其实蛮基础的,其实你已经知道思路了,不知道为啥来发帖。(PS:没对乌龟壳研究,不知道有没有提供更简单的函数来实现) 1:首先对需要的数据做join,然后对TownID和SeleTypeID做group by 2:对1的结果集做纵变横输出 ######写了 三个子查询,join起来的

    2020-06-09 19:19:08
    赞同 展开评论