SQL带聚集函数的联结

SQL带聚集函数的联结,如聚集函数所述,聚集函数用来汇总数据。虽然至今为止我们举的聚集函数的例子都只是从一个表中汇总数据,但这些函数也可以与联结一起使用。

我们来看个例子,要检索所有顾客及每个顾客所下的订单数,下面的代码使用COUNT()函数完成此工作:

    SELECT Customers.cust_id,
            COUNT(Orders.order_num) AS num_ord
    FROM Customers
      INNER JOIN Orders ON Customers.cust_id = Orders.cust_id
    GROUP BY Customers.cust_id;

输出结果如下:

    cust_id          num_ord
    ----------      --------
    1000000001      2
    1000000003      1
    1000000004      1
    1000000005      1

这条SELECT语句使用INNER JOIN将Customers和Orders表互相关联。GROUP BY子句按顾客分组数据,因此,函数调用COUNT(Orders.order_num)对每个顾客的订单计数,将它作为num_ord返回。

聚集函数也可以方便地与其他联结一起使用。请看下面的例子:

    SELECT Customers.cust_id,
            COUNT(Orders.order_num) AS num_ord
    FROM Customers
      LEFT OUTER JOIN Orders ON Customers.cust_id = Orders.cust_id
    GROUP BY Customers.cust_id;

输出结果如下:

    cust_id          num_ord
    ----------      -------
    1000000001      2
    1000000002      0
    1000000003      1
    1000000004      1
    1000000005      1

这个例子使用左外部联结来包含所有顾客,甚至包含那些没有任何订单的顾客。结果中也包含了顾客1000000002,他有0个订单,这和使用INNER JOIN时不同。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

SQL教程