a表余额表字段 日期 余额 b利率表 日期 利率
利息公式 余额*利率
求sql与解题思路
关于#sql#的问题:a表余额表字段 日期 余额 b利率表 日期 利率利息公式 余额*利率求sql与解题思路
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
Watch the clown 2023-05-09 20:49关注不建议使用join做等值链接,因为一旦字段变多匹配效率会非常低下。写个子查询效率高点:
SELECT a.日期, (SELECT SUM(a.余额 * b.利率) FROM b WHERE b.日期 = a.日期) AS 利息 FROM a;第二种写法cross apply:
SELECT a.日期, c.利息 FROM a CROSS APPLY ( SELECT SUM(a.余额 * b.利率) AS 利息 FROM b WHERE b.日期 = a.日期 ) AS c;使用 LATERAL 关键字,这是apply高级写法的最优code:
SELECT a.日期, t.利息 FROM a LEFT JOIN LATERAL ( SELECT SUM(a.余额 * b.利率) AS 利息 FROM b WHERE b.日期 = a.日期 ) t ON TRUE;如果是大企业,经验足的会使用窗口函数或者cte通用表达式来节省代码行数:
SELECT DISTINCT a.日期, SUM(a.余额 * b.利率) OVER (PARTITION BY a.日期) AS 利息 FROM a JOIN b ON a.日期 = b.日期;本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 3无用