汇总数据

-- 聚集函数(方便分析和报表生成,其实也就是进行简单的统计学的处理,不需要返回原表来浪费时间)
/*
比如:
1.确定表中某些行数(或者满足某个条件或包含某个特定值的行数)
2.获得表中某些行的和
3.找出表列(或所有行或某些特定的行)的最大值、最小值、平均值
(在各种主要SQL实现中得到了相当一致的支持)
特点:对某些行运行的函数,计算并返回一个值
SQL聚集函数:
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
*/

-- AVG()函数
/* 计算平均值,可以返回所有列的平均值,也可以返回特定列或行的平均值*/
SELECT AVG(prod_price) AS avg_price
FROM Products;

#返回Products表中所有产品的平均价格 

#返回特定供应商所提供产品的平均价格
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

#AVG()只能用于单个列,列名是函数的参数,对于多个列则要用多个AVG()
#AVG()函数忽略列值为NULL的行

-- COUNT()函数
/*COUNT()确定表中行的数目或符合特定条件的行的数目
有两种使用方式:
1.使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值
2.COUNT(column)对特定列中具有的值的行进行计数,忽略NULL值*/

SELECT COUNT(*) AS num_cust
FROM Customers;#返回Customers表中顾客的总数

-- 只对具有电子邮件地址的客户计数
SELECT COUNT(cust_email) AS num_cust
FROM Customers;

# 注意COUNT()指定列名,则忽略为空的行,使用星号*,则不忽略。

-- MAX()返回指定列中的最大值(要求指定列名)
SELECT MAX(prod_price) AS max_price
FROM Products;

/* MAX()一般用来找出最大的数值或日期值,但是也可以用来返回任意列中的最大值,在文本列中返回该列排序后的最后一行
MAX()函数忽略列值为NULL的行*/

-- MIN()函数(返回指定列的最小值)(要求指定列)
SELECT MIN(prod_price) AS min_price
FROM Products;

 

/* MIN()一般用来找出最小的数值或日期值,但是也可以用来返回任意列中的最小值,在文本列中返回该列排序后的最前面的行
MIN()函数忽略列值为NULL的行*/

-- SUM()函数 (用来返回指定列值的和)
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;

-- SUM()也可以用来合计计算值,得到总的订单金额
SELECT SUM(item_price*quantity) AS total_price
FROM OrderItems
WHERE order_num = 20005;

#SUM()函数忽略列值为NULL的行 

-- 聚集不同值
/* AVG() COUNT() MAX() MIN() SUM()都可以如下使用
1.对所有行执行计算(默认ALL参数)
2.只包含不同的值,指定DISTINCT参数,去重 */
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

/* 再次强调DISTINCT后面必须使用列名,不能用于COUNT(*)
DISTINCT用于MIN()和MAX()没有意义 */

-- 组合聚集函数
#SELECT语句可根据需要包含多个聚集函数
SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM Products;

#取别名时不要使用表中实际的列名,可能会产生模糊的错误信息 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。 实现要求: ⑴ 编写实现将数据记录插入到数据文件的最后的函数; ⑵ 编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶ 统计每台收款机的销售总额; ⑷ 编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸ 以商品为单位,统计每种商品的销售总额。 ⑹ 设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。
在C#中使用LINQ进行数据汇总可以使用GroupBy和Select操作符。首先,使用GroupBy操作符按照指定的属性对数据进行分组。然后,使用Select操作符选择需要的属性并进行汇总计算。例如,给定一个名为orderlist的订单列表,我们可以使用以下代码来汇总数据: var resultlist = orderlist.GroupBy(oo => new { oo.Deptname, oo.Userid, oo.Username }) .Select(ss => new OBreakfirstModel { Number = number++, Deptname = ss.Key.Deptname, Userid = ss.Key.Userid, Username = ss.Key.Username, Ototalamount = ss.Sum(s => s.Ototalamount), Ocount = ss.Sum(s => s.Ocount) }); 在上述代码中,我们首先使用GroupBy操作符按照Deptname、Userid和Username属性对订单列表进行分组。然后,使用Select操作符创建一个新的OBreakfirstModel对象,其中包含分组的属性以及对Ototalamount和Ocount属性进行求和的结果。最后,将结果存储在resultlist变量中。 请注意,上述代码中的number变量是用于给每个分组的结果赋予一个序号的辅助变量,您可以根据需要进行调整。 \[1\] #### 引用[.reference_title] - *1* [C# Linq 查询汇总](https://blog.csdn.net/lwf3115841/article/details/127641740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [C#中Linq用法汇集](https://blog.csdn.net/kalvin_y_liu/article/details/125506763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值