SQL" group by"不起作用

时间:2017-03-12 18:38:47

标签: mysql sql

如果有下表:

offer(title, price, theater)

此表的目的是描述以价格提供电影的影院。

我想要展示的是:

  

对于每部电影,以一个最高价格显示其价格   所有剧院,也显示剧院名称,提供最高的   价。

所以在这里,我写道:

select A.movie, max(A.price), A.theater from offer A group by A.movie

然而,这不起作用。如何在所有影院中以最高价格提供独特的标题及其价格和影院?

4 个答案:

答案 0 :(得分:1)

以下是您可以编写查询以查找最高价格及其相应剧院的方法:

SELECT o.movie,
       (
            SELECT MAX(price)
            FROM offer
            WHERE movie = o.movie
       ) as price,
       (
            SELECT theater
            FROM offer
            WHERE movie = o.movie
            ORDER BY price DESC
            LIMIT 1
       ) as theater
FROM offer o;

答案 1 :(得分:0)

mClose_fb = (FloatingActionButton)findViewById(R.id.fb_Cancel);
mClose_fb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                animationRevealClose();
            }
        });

答案 2 :(得分:0)

执行此操作的典型方法是使用row_number()

select o.movie, o.price, o.theater
from (select o.*,
             row_number() over (partition by movie order by price desc) as seqnum
      from offer o
     ) o
where seqnum = 1;

请注意,您可以在Oracle中没有子查询的情况下执行此操作:

select movie, max(price),
       max(theater) keep (dense_rank first order by price desc) as theater
from offer o
order by movie;

答案 3 :(得分:0)

你说提供表,只是

  标题,价格和剧院

列。

如果您没有通过撰写问题而出错,问题是列电影不存在