当前位置: 首页 > 面试题库 >

选择最高薪水

湛宏旷
2023-03-14
问题内容

假设有工资表:

name     lowhours  highhours  wage 
 Default  0.0       40.0       100  
 Default  40.0      50.0       150  
 Default  50.0      70.5       154  
 Default  70.5      100.0      200  
 Brian    0.0       40.0       200  
 Brian    40.0      50.0       250  
 Brian    50.0      60.0       275  
 Brian    60.0      70.0       300  
 Brian    70.0      80.0       325  
 Brian    80.0      9999.0     350  
 Chad     0.0       40.0       130  
 Chad     40.0      9999.0     170

我目前正在使用此代码(AutoIT脚本:

func getCurrentWage($Employee, $Hour_number)
    Dim  $row
    Local $Wage = 0
    Local $Found = "found"
    _SQLite_QuerySingleRow(-1, "SELECT wage FROM wagetable WHERE name LIKE " & _SQLite_Escape($Employee) & " AND " & _SQLite_Escape($Hour_number) & " BETWEEN lowhours AND highhours;", $row)
    if @error then
        _SQLite_QuerySingleRow(-1, "SELECT wage FROM wagetable WHERE name LIKE 'Default' AND " & _SQLite_Escape($Hour_number) & " BETWEEN lowhours AND highhours;", $row)
        $Found = "not found"
    endif

    If ($row[0] == "") Then Msgbox(0,0,"Error getCurrentWage")
    $Wage = $row[0]

    Debug("Wage='" & $Wage & "'  because " &$Employee&" was "& $Found& " -- and Hours Elapsed is " & $Hour_number, true)
    return $Wage
EndFunc

因此,如果Hour_number在低小时或高小时之间,那两个查询是完美的。我需要某种查询,它基本上会执行以下操作:

SELECT wage from wagetable WHERE name LIKE $Employee AND max(highhours)

然后将其重复为“默认”,因为找不到该员工。

补充:如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”?


问题答案:

如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”?

  SELECT name, wage, highhours
    FROM wagetable
   WHERE name like 'Brian' OR
         name like 'Default'
ORDER BY name,
         highhours desc

该查询在查询时有效Brian,但要使它适用于任何名称,Default都应以特殊字符开头将其存储在数据库中_-+@,因为数字和字母在排序中排在首位。

另一种方法是,为您打造另一列表中,为我们的说法,所谓的缘故priority应有的价值0Default,并1用于任何其他用户。然后,您可以简单地执行以下操作:

  SELECT name, wage, highhours
    FROM wagetable
   WHERE name like 'Brian' OR
         name like 'Default'
ORDER BY priority desc,
         highhours desc

当然,这是相同的解决方案,但比依赖默认值名称中的特殊字符更好。



 类似资料:
  • 问题内容: 我需要有一个清单,每个部门只有一名最高薪水雇员。allEmployees是源列表。 问题答案: 您可以使用分组收集器来做到这一点: 与静态导入 此代码创建了所有员工的,并在的帮助下将其与部门分组。对于分类为同一键的所有值,我们只需要保留薪水最高的员工,因此我们将其与进行比较,比较器会将薪金与进行比较。由于返回一个(以处理列表为空的情况),我们通过调用来包装它,并返回一个仅返回雇员的装订

  • 员工属于一个部门(外键=D_ID)。员工有一个SSN(主键)、姓名、工资和D_ID。

  • 问题内容: 假设您得到以下名为Employee的简单数据库表,该表具有2个列,分别名为Employee ID和Salary: 我想写一个查询,从员工那里选择max(salary)作为max_salary,2nd_max_salary 然后它应该返回 我知道如何找到第二高的薪水 或找到第n个 但我无法弄清楚如何将这2个结果结合起来以获得所需的结果 问题答案: 您可以只运行2个查询作为内部查询以返回2

  • 问题内容: 如何使用“ rownum”关键字从任何表中检索第三行(我使用的是oracle-10g) 问题答案: 当查询产生行时,Oracle将按顺序为ROWNUM赋值-因此,获取的第一行获取ROWNUM = 1,获取的第二行获取ROWNUM = 2,获取的第三行获取ROWNUM = 3,依此类推。注意-对于一行要被分配ROWNUM = 3,必须获取前两行。这就是为什么您的查询不返回任何行的原因。您

  • 问题内容: 我指的是以下查询,以找到雇员的Nth最高薪水。 一位先生说,此查询有效。有人可以解释一下如何将COUNT(n等于1到X,其中X是不同工资总额)的值等于&n会产生这个结果吗? 我试图了解数据库如何在内部处理此查询并产生结果? 谢谢你。 问题答案: 首先,查询将返回 最低 薪水值。要返回最高薪水值,您必须更改为。 接下来,此查询的工作方式是:首先找到一个唯一的薪水值列表作为一个派生表,然后

  • 我有这样的数据: 自然有许多地点和许多产品每个地点。我希望以这样的数据流结束: 我想出了最常见的方法,用这个。 在将其扩展到N个最常见的时,我可以创建另一个删除这些行的dataframe,再次运行该过程以获得第二个最常见的,并按位置将它们连接在一起。通过适当的列命名,可以将其放入循环中运行N次,每次迭代添加一个列。 然而,这将是非常缓慢的,因为它将划分和加入每个迭代。例如,我如何以更好的方式获得每