SQL 在做两个表数据聚合函数的时候,子查询,左查询和右查询

现在有2个表
用户表:customers ,有用户id cust_id,状态 cust_state
订单表:orders,有订单对应用户id,订单信息
现在要求:计算每个用户的订单数量,显示用户名字和状态

使用子查询:

SELECT
  CUST_NAME,
  CUST_STATE,
  (SELECT count(*)
   FROM ORDERS
   WHERE orders.CUST_ID = customers.cust_id) AS orders
FROM CUSTOMERS
ORDER BY CUST_NAME;

SQL 在做两个表数据聚合函数的时候,子查询,左查询和右查询_第1张图片

使用内链接:

SELECT
  CUST_NAME,
  CUST_STATE,
  count(*) AS orders
  FROM CUSTOMERS c INNER JOIN ORDERS O ON c.CUST_ID = O.CUST_ID
GROUP BY CUST_NAME,CUST_STATE
ORDER BY CUST_NAME;

SQL 在做两个表数据聚合函数的时候,子查询,左查询和右查询_第2张图片

使用左链接

SELECT
  CUST_NAME,
  CUST_STATE,
  count(*) AS orders
  FROM CUSTOMERS c LEFT JOIN ORDERS O ON c.CUST_ID = O.CUST_ID
GROUP BY CUST_NAME,CUST_STATE
ORDER BY CUST_NAME;

SQL 在做两个表数据聚合函数的时候,子查询,左查询和右查询_第3张图片

使用右链接

SELECT
  CUST_NAME,
  CUST_STATE,
  count(*) AS orders
  FROM CUSTOMERS c Right JOIN ORDERS O ON c.CUST_ID = O.CUST_ID
GROUP BY CUST_NAME,CUST_STATE
ORDER BY CUST_NAME;

SQL 在做两个表数据聚合函数的时候,子查询,左查询和右查询_第4张图片

你可能感兴趣的:(Oracle)