【问题标题】:Order by using rounded column使用圆角列排序
【发布时间】:2015-09-21 03:23:07
【问题描述】:

我想打印以下结果

Oceania        109189 
South America  147435 
Europe         175138 
Africa         274439 
Asia           693038 

我的查询是

select co.Continent bb, round(avg(ci.Population)) as aa
from Country co
  FULL OUTER JOIN City ci ON co.Code = ci.CountryCode
group by co.Continent
having (count(ci.ID)<>0 and co.Continent is not null)
order by aa asc; 

及其显示如下结果

Africa         274439 
Asia           693038 
Europe         175138 
Oceania        109190 
South America  147435

如何使用四舍五入的值对结果排序????

【问题讨论】:

  • 您使用的是哪个 Oracle 版本?
  • 很奇怪。将选择移至作为派生表,然后尝试 ORDER BY。
  • 没明白你的意思.....
  • 看看布莱克斯七号的回答,你就会明白我的意思了!
  • 我早些时候尝试过。但它没有用:(

标签: sql oracle rounding sql-order-by


【解决方案1】:

尝试关注,

select bb, round(aa) as aa from (
    select co.Continent bb, avg(ci.Population) as aa
    from Country co
    FULL OUTER JOIN City ci ON co.Code = ci.CountryCode
    group by co.Continent
    having (count(ci.ID)<>0 and co.Continent is not null)
)T
order by round(aa);

【讨论】:

    【解决方案2】:

    我看不出为什么 ORDER BY 不起作用。您的查询是正确的。不过,显然您会得到 co.Continent 排序的记录。

    所以一定是您的应用在从 DBMS 获得结果后执行这种排序。可能是自动排序列表框之类的?

    【讨论】:

    • 这不应该是评论吗?当然,可能还有其他东西可以订购显示的结果。但我不得不问。
    • @Blakes 七:不,这就是答案。不要怀疑查询,检查应用程序:-)
    • 除了“如果鞋子合脚”不知道该说什么。所以我想如果这个问题在所有信息中都缺乏,那么一个公平的假设是答案在于说明某些东西在所说的之外。我猜是学习经历。
    • @Blakes 七:我看到的唯一其他可能的假设(即您的假设 :-) 将是他的 Oracle DBMS 中的一个错误。我觉得不太可能。有一个 ORDER BY 子句,显示的数据 排序的,但不同。很明显,一个接一个。 Raj 给出了他认为相关的所有信息、SQL 和结果,所以我不怪他。
    【解决方案3】:

    这不是很简单吗? :

      select co.continent bb, round (avg (ci.population)) as aa
        from country co full outer join city ci on co.code = ci.countrycode
    group by co.continent
      having (count (ci.id) <> 0 and co.continent is not null)
    order by round (avg (ci.population)) asc;
    

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多