SQL 使用带聚集函数的联结

news/2024/12/24 2:57:38 标签: sql, 数据库

聚集函数用于汇总数据,通常用于从一个表中计算统计信息,但也可以与联结一起使用。以下是一个例子,展示如何使用聚集函数统计每个顾客的订单数。

示例 1:使用 COUNT() 函数与 INNER JOIN

假设我们需要检索所有顾客及每个顾客所下的订单数,以下 SQL 查询使用 COUNT() 函数完成此任务:

sql">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;

输出:

sql">cust_id       num_ord
----------    --------
1000000001    2
1000000003    1
1000000004    1
1000000005    1

分析:
该查询使用 INNER JOINCustomersOrders 表连接,GROUP BY 子句根据顾客ID对数据进行分组。COUNT(Orders.order_num) 聚合函数统计每个顾客的订单数量,并将其作为 num_ord 返回。

示例 2:使用 COUNT() 函数与 LEFT OUTER JOIN

聚集函数也可以与其他类型的联结结合使用,下面是一个使用左外部联结 (LEFT OUTER JOIN) 的例子,展示如何包含没有订单的顾客:

sql">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;

输出:

sql">cust_id       num_ord
----------    --------
1000000001    2
1000000002    0
1000000003    1
1000000004    1
1000000005    1

分析:
此查询使用 LEFT OUTER JOIN,它会返回所有顾客的数据,包括那些没有任何订单的顾客(如顾客 1000000002)。与 INNER JOIN 不同,使用外部联结时,未匹配的订单数量将显示为 0


总结

  • 聚集函数(如 COUNT())通常用于计算数据的汇总值,可以结合不同类型的联结来获取更全面的信息。
  • INNER JOIN 仅返回在两个表中都有匹配项的记录,适用于需要排除没有相关数据的情况。
  • LEFT OUTER JOIN 返回左表中的所有记录,即使右表中没有匹配项,也会显示为 NULL 或 0,适用于需要包含所有记录的情况。

通过掌握聚集函数与联结的结合使用,您可以高效地从多个表中提取和汇总数据,以满足更复杂的查询需求。


http://www.niftyadmin.cn/n/5797246.html

相关文章

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用,今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机(SVM)是一种监督学习算法,广泛用于分类和回归问题。 它的核心思想是通过…

深度学习中的MSE与MAE

有空再把内容补上来 均方误差(Mean Squared Error,MSE)和平均绝对误差(Mean Absolute Error,MAE)是深度学习中常用的两种损失函数,用于衡量模型预测结果与真实标签之间的差异,以下是…

robots协议

robots协议,也称为爬虫协议、爬虫规则、机器人协议等,其全称是“网络爬虫排除标准”(Robots Exclusion Protocol)。以下是对robots协议的详细介绍: 一、定义与功能 robots协议是指网站可以建立一个名为robots.txt的文…

我的个人博客正式上线了!

我的个人博客终于上线啦点此访问 经过一番折腾,我的个人博客终于上线啦!这是一个属于我自己的小天地,可以用来记录生活点滴、技术分享以及一些随想。 在这里,我想分享一下搭建博客的整个过程和心得体会。 为什么要搭建博客&…

与乐鑫相约 CES 2025|创新技术引领物联网与嵌入式未来

2025 国际消费电子产品展览会 (International Consumer Electronics Show, CES) 将于 2025 年 1 月 7 至 10 日在美国拉斯维加斯盛大开幕。作为全球规模最大、水准最高,且影响力最广的消费电子类科技盛会,CES 每年都吸引着全球行业领袖、开发者和技术爱好…

【计算机视觉基础CV-图像分类】02-入门详解图像分类、经典数据集、比赛与冠军图像模型演进史

前言 图像分类(Image Classification)是计算机视觉(Computer Vision)中一项基础且核心的任务。简单来说,就是让计算机从给定的类别集合中,为一张输入图片分配一个正确的类别标签。这个过程听起来直观&…

流式处理,为什么Flink比Spark Streaming好?

1 、反压机制 Flink 在数据传输过程中使用了分布式阻塞队列,一个阻塞队列中,当队列满了以后发送者会被天然阻塞住,这种阻塞功能相当于给这个阻塞队列提供了反压的能力。 Spark Streaming 为了实现反压这个功能,在原来的架构基…

从零玩转CanMV-K230(4)-小核Linux驱动开发参考

前言 K230 芯片是一款基于 RISC-V 架构的端侧 AIoT 芯片,包含两个核心: CPU 1: RISC-V 处理器,1.6GHz,32KB I-cache, 32KB D-cache, 256KB L2 Cache,128bit RVV 1.0扩展 CPU 0: RISC-V 处理器,0.8GHz&am…