sql - SQL如何从一个列表中连接相同的值然后求和
问题描述
这里的问题是我有一个接受这些输入的程序
[
{
customer: 'Alexandra'
productCode: 'SH20'
},
{
customer: 'Alex'
productCode: 'SH20'
},
{
customer: 'Alexis'
productCode: 'SH21'
}
]
每个产品代码都有自己的价格,表产品是这样的
{
id: 1,
productCode: 'SH20',
name: 'Tires',
price: 100
}
我想根据输入总结产品的总价格,但是使用WHERE IN ("SH20", "SH20", "SH21")
只会显示“SH20”中的 1 行,如果我把它总结出来,我得到的产品总价格是错误的。
如何使用 SQL 选择包括重复项在内的所有行并对其求和?这种问题只能用SQL来解决吗?
编辑:
尝试查询,以免假设产品SH21
成本为 200 和SH20
100。此查询的总价格是 300,应该是 400,因为有 2 'SH20'。
SELECT sum(price) FROM product WHERE productCode in ('SH20', 'SH20', 'SH21')
解决方案
将产品表与您的输入数据连接起来,以获得产品 SH20 两次。
SELECT SUM(product.price) AS total
FROM product
JOIN
(
SELECT 'SH20' AS productcode
UNION ALL
SELECT 'SH20' AS productcode
UNION ALL
SELECT 'SH21' AS productcode
) requested ON requested.productcode = product.productcode;
感谢您接受这一点:-) 这与VALUES
替代条款相同:
SELECT SUM(product.price) AS total
FROM product
JOIN (VALUES ('SH20'), ('SH20'), ('SH21')) AS requested(productcode)
ON requested.productcode = product.productcode;
推荐阅读
- linux - 音频驱动程序基地址、DMA 和 IRQ
- php - 如何在while循环中调用函数
- unit-testing - Angular:ng测试运行但不执行测试用例
- android - 用户未连接到互联网时如何显示自定义错误布局?
- android - Manifest 中定义的启动模式是覆盖通过意图标志调用的启动模式还是相反?
- angular - 订阅路由以获取可观察性并在一次订阅中对其进行处理
- vba - VBA - 在公式中使用 Columns()
- xamarin.forms - apk 已安装,但不适用于 android 6.0 版本,只有 xamarin 形式
- spring-mvc - Struts 1.2.9 到 Spring MVC 迁移 - ActionForms 的处理范围
- recursion - 动态内存分配查询