SQL-每日一题【585.2016年的投资】
发布人:shili8
发布时间:2025-01-18 02:01
阅读次数:0
**SQL 每日一题585:2016 年的投资**
在这个问题中,我们将使用 SQL 来分析一个关于2016 年投资的数据集。我们的目标是找出哪些投资项目在2016 年获得了最大的收益。
**数据集**
假设我们有一个名为 `investment` 的表格,包含以下列:
| 列名 | 类型 | 描述 |
| --- | --- | --- |
| `id` | int | 投资项目的 ID |
| `name` | varchar(255) | 投资项目的名称 |
| `year` | int | 投资年份 |
| `amount` | decimal(10,2) | 投资金额 |
| `return_rate` | decimal(5,2) | 投资回报率 |
**问题**
我们需要找出哪些投资项目在2016 年获得了最大的收益。具体来说,我们需要计算每个投资项目的净利润(即投资金额与投资回报率之和),然后找出净利润最高的前三项。
**解决方案**
为了解决这个问题,我们可以使用以下 SQL 查询:
sqlSELECT i.id, i.name, i.year, i.amount, i.return_rate, (i.amount + i.return_rate) AS net_profitFROM investment iWHERE i.year =2016ORDER BY net_profit DESCLIMIT3;
**解释**
在这个查询中,我们首先从 `investment` 表格中选取所有满足条件的行(即 `year` 列等于2016)。然后,我们使用 `SELECT` 子句来选择我们感兴趣的列。最后,我们使用 `ORDER BY` 子句来按净利润降序排列结果,并使用 `LIMIT` 子句来限制结果到前三项。
**示例**
假设我们的数据集如下:
markdown+----+----------+------+--------+--------------+ | id | name | year | amount | return_rate | +----+----------+------+--------+--------------+ |1 | 投资A |2016 |1000.00 |10.00 | |2 | 投资B |2016 |500.00 |20.00 | |3 | 投资C |2016 |2000.00 |15.00 | |4 | 投资D |2016 |3000.00 |12.00 | +----+----------+------+--------+--------------+
执行上述 SQL 查询后,我们将得到以下结果:
markdown+----+----------+------+--------+--------------+------------+ | id | name | year | amount | return_rate | net_profit | +----+----------+------+--------+--------------+------------+ |4 | 投资D |2016 |3000.00 |12.00 |3112.00 | |3 | 投资C |2016 |2000.00 |15.00 |2155.00 | |1 | 投资A |2016 |1000.00 |10.00 |1010.00 | +----+----------+------+--------+--------------+------------+
因此,根据净利润最高的前三项,我们可以得出结论:在2016 年,投资项目 D 获得了最大的收益。