0

我必须回答以下问题

“对于数据库中的每一年,列出该年上映的电影的年份和总数,按降序显示这些总数。也​​就是说,电影数量最多的年份首先出现。如果有些年份有相同数量的电影,按年份递增的顺序放映这些电影。”

目前我正在使用下面的代码将电影组合在一起,但无法对它们进行排序:

Select YearReleased, count(*)                
from Movies                             
group by YearReleased 

我希望使用一些东西来订购它,并尝试使用第一个查询的结果进行子查询,如下所示:

(select * from results order by count(*))

但到目前为止,我一直没有成功。我该如何实现这一点,或者有没有更好的方法来按顺序获得结果?

4

5 回答 5

5

与实际的错误文本相比,“不成功”并不是很有用——而且您没有告诉我们您正在针对哪个供应商的数据库运行,所以我们无法测试。也就是说,以下应该有效:

select
  YearReleased,
  count(*) as movie_count
  from movies
  group by YearReleased
  order by movie_count desc, YearReleased;

不需要子查询!

针对 SQLite 3.5.9 验证;如果针对不符合标准的东西(SQLite,除了非常明确记录的方式)运行,您的里程可能会有所不同。

于 2009-09-03T05:04:06.857 回答
0

是的,对于聚合,您可以为 count(*) 设置一个别名,它可以作为列引用。

于 2013-02-19T01:18:32.463 回答
0

select * from (Select YearReleased, count(*) as NumReleased from Movies group by YearReleased) order by NumReleased

于 2009-09-03T05:03:57.810 回答
0
select * from (select YearReleased, count(*) counter
from Movies
group by YearReleased 
) a order by counter

可能需要根据您的 sql 风格更改语法。

于 2009-09-03T05:03:59.540 回答
0

在第一个查询中:选择 yearReleased, count(*) as 'count1' 在第二个中:按count1排序

于 2009-09-03T05:05:40.147 回答