首页 > 解决方案 > PostgreSQL 查询到 JOIN 和 SUM

问题描述

我有 2 张桌子:

  1. 订单
  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')

如何从单个查询中获取总和和计数?

标签: sqlpostgresqlgroup-by

解决方案


如果要跨值(例如)使用聚合(例如SUM, ),那么您需要在非聚合列上使用子句:COUNTpCodeGROUP 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.pCodeSELECT子句和GROUP BY子句中。如果您也想列出,orders.order_no那么您也可以将该列添加到两个子句中。


推荐阅读