sql - 面试题最优解

标签 sql

最近在一次求职面试中,我遇到了以下问题。

说我有下表

widget_Name        |     widget_Costs      | In_Stock
---------------------------------------------------------
a                   |         15.00          |    1
b                   |         30.00          |    1
c                   |         20.00          |    1
d                   |         25.00          |    1

其中widget_name 是widget 的名称,widget_costs 是widget 的价格,in stock 是常数1。

现在对于我的商业保险,我有一定的免赔额。我正在寻找一个 sql 语句,它会告诉我每个小部件及其价格超过免赔额。所以如果我的免赔额是 50.00 美元,上面的就会返回
widget_Name        |     widget_Costs      | In_Stock
---------------------------------------------------------
a                   |         15.00          |    1
d                   |         25.00          |    1

由于小部件 b 和 c 用于满足免赔额

我能得到的最接近的是以下
SELECT 
    *
FROM (
     SELECT 
          widget_name, 
          widget_price
     FROM interview.tbl_widgets
     minus
     SELECT widget_name,widget_price
     FROM (
          SELECT 
               widget_name,
               widget_price, 
               50 - sum(widget_price) over (ORDER BY widget_price  ROWS between unbounded preceding and current row) as running_total
          FROM interview.tbl_widgets 
     ) 
     where  running_total >= 0
)
;

这给了我
widget_Name        |     widget_Costs      | In_Stock
---------------------------------------------------------
c                   |         20.00          |    1
d                   |         25.00          |    1

因为它使用a和b来满足大部分免赔额

我希望有人能告诉我正确的答案

编辑:我理解面试问题是问这个。给定一个小部件及其价格表,并给出一个美元金额,减去尽可能多的小部件,最多为美元金额,然后返回这些小部件及其剩余价格

最佳答案

我会提出一个答案,以防万一它比看起来更容易,但如果这个想法只是返回任何成本超过免赔额的小部件,那么你会做这样的事情:

Select
  Widget_Name, Widget_Cost, In_Stock
From
  Widgets
Where
  Widget_Cost > 50 -- SubSelect for variable deductibles?

对于您的示例数据,我的查询不返回任何行。

关于sql - 面试题最优解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5624824/

相关文章:

sql - 如何更改 magento 中的 base_url。因为我的网站在我的 magento 管理员上更改后消失了

java - 如何在 hibernate 中对关联表进行排序?

sql - 如何在 SELECT 中没有列的情况下按顺序排序

sql - 仅打印最后一个值的自定义订单

sql - 使用 clickhouse 计算当前行和上一行之间的差异(或增量)

php - 特定条件下的 MySQL COUNT() 总帖子数?

sql - 如果在列中交换相同的值,则元组是重复的,如何删除 Oracle SQL 中的重复项?

SQL 查询选择具有不同主题的最新记录

c# - 从 sql 查询 C# 填充系列

java - 如何移动MySQL更新查询中的所有记录?