sql - PostgreSQL 查询到 JOIN 和 SUM
问题描述
我有 2 张桌子:
- 订单
- 订单项
保存在表订单字段中的每个订单的总和(产品总价格)total
。我需要连接这两个表并从订单表中保存的值中获取总和和计数,示例如下
SELECT
count(orders.id), sum(orders.total)
FROM
orders
INNER JOIN orderItems ON orderItems.order_no = orders.order_no
AND orders.order_no LIKE 'P%' AND orderItems.pCode IN ('1','2','3','4')
如何从单个查询中获取总和和计数?
解决方案
如果要跨值(例如)使用聚合(例如SUM
, ),那么您需要在非聚合列上使用子句:COUNT
pCode
GROUP BY
SELECT
orderItems.pCode,
COUNT(orders.id) AS order_count,
SUM(orders.total) AS order_total
FROM orders
INNER JOIN orderItems
ON orderItems.order_no = orders.order_no
WHERE orders.order_no LIKE 'P%'
AND orderItems.pCode IN ('1','2','3','4')
GROUP BY
orderItems.pCode
注意如何orderItems.pCode
在SELECT
子句和GROUP BY
子句中。如果您也想列出,orders.order_no
那么您也可以将该列添加到两个子句中。
推荐阅读
- python - matplot在条形图中显示的阿拉伯X轴值字母未连接
- html - 拖动/排序图像
- python - odoo-12 : 如何解决 write() 方法问题
- intellij-idea - 我们可以在 IntelliJ 中对 YAML 文件进行变量替换吗?
- c# - 使用带有信头的 iTextSharp 在 Xamarin.Android 中创建 pdf
- android-studio - 通过 MoPub 进行 Facebook Audience Network 中介(横幅和插页式广告)
- android - adjustResize 不适用于片段布局内的 EditText 视图
- unix - How can i reverse sort a letter by occurrence but if it has the amount of occurrences sort it alphabetically?
- angular - Angular Material CSS 不反射
- node.js - 更新项目的属性列表