【问题标题】:Keeping result data in same order as inserted保持结果数据与插入的顺序相同
【发布时间】:2019-02-22 07:35:25
【问题描述】:

我已经像这样将数据插入到表部门中

Dept  Deptname
1     '1  dept'
5     '5   dept'
10     '10 dept'
20     '20 dept'
4      '4  DEPT'
3      '3 DEPT'

在将 Dept 表中的 dept 匹配到 Emp 表之后,我想以相同的 deptname 顺序显示匹配的结果以及 dept 的 avg sal。 结果应该是这样的

Deptname  avgsal
'1  dept'   1000
'5  dept'   1100
'10  dept'  2000
'20  dept'  1500

如何在仅显示部门名称和平均工资的情况下以相同的顺序获得结果

【问题讨论】:

  • ORDER BY 会处理这个问题。
  • 尝试详细说明您的问题,我的意思是让它变得不太清楚。尝试以表格的形式展示或者展示你目前所做的事情
  • 表格没有内在的顺序。从查询中获得保证输出顺序的唯一方法是在该查询上编写ORDER BY 子句。
  • 如果您希望插入数据的顺序用于将来的引用,那么您需要有一个标识列以便您可以按顺序排序。

标签: sql average


【解决方案1】:

使用 order by ,如果不使用 order by 就无法显示任何特定顺序的结果

  order by Dept asc

【讨论】:

  • 但是dept值的顺序不同;所需的结果是根据部门名称顺序以及 emp 表中的 avg sal
【解决方案2】:

你可以试试下面的代码:

select dept.deptname, 
       (select avg(emp.sal) from emp where emp.dept = dept.dept) as avgsal
  from dept

通过在SELECT 子句中计算平均工资,您将保留当您从dept 表中选择时所显示的数据顺序(而不是按deptdeptname 排序)。如果我是正确的,那正是你想要的。

希望我能帮上忙!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2010-12-09
    相关资源
    最近更新 更多