sql - 获取具有特定值的两个产品的总和
问题描述
我从表中选择产品时遇到问题。我还希望查询从该查询中选择所有产品的总和(如果它们具有特定值),例如:我想获取类型 = 1 或类型 = 2 的产品的价格总和。所以如果我有 100 个产品其中两个的类型 =1 或类型 =2,第一个产品的价格 = 10,另一个 = 25,然后我想从查询中获取值 =35。
SELECT
product.name,
product.type,
product.price
FROM product
有没有比制作单独的子查询更好的方法来做到这一点?上面的查询示例非常简单,我需要这个的实际情况是一个更大的查询,使用子查询将极大地影响性能。
解决方案
您可以使用窗口函数。即使查询不使用分组,这也允许聚合所有返回的行。
SELECT
product.name,
product.type,
product.price,
SUM(product.price) OVER() TotalPrice
FROM product
窗口函数的真正强大之处在于您还可以返回子组的聚合,例如。包括每种类型的总价:
, SUM(product.price) OVER(PARTITION BY product.type) TotalPricePerType
这将显示 type=1、type=2 等所有行的总价。
推荐阅读
- javascript - `contenteditable` 和 `white-space: pre-wrap` - 换行插入
- hexo - 如何在 Hexo 中重命名帖子
- java - 当我想从模型类中获取数据时出现 NullPointerException
- python - Python - 如何计算日期值列表的多少个月
- php - 在 php mysql 中显示数组
- php - PHP 警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,在
- r - 如何将特定的标记点添加到 ggtern 图中?
- cumulocity - 如何在自定义 Cumulocity 应用程序中应用“开箱即用”的 Cumulocity 小部件(例如“径向计”)
- sql - 如何为包含相同值的行分配 1 个唯一编号
- sql - 使用计数案例