SQL对“图书”表创建一个分组总计查询,统计不同出版社出版的图书数量,显示“?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL对“图书”表创建一个分组总计查询,统计不同出版社出版的图书数量,显示“?相关的知识,希望对你有一定的参考价值。

参考技术A

用group by进行分组查询,用count函数统计数量

祝好运,望采纳

按 ID 分组的 SQL 运行总计

【中文标题】按 ID 分组的 SQL 运行总计【英文标题】:SQL Running total grouped by ID 【发布时间】:2017-12-12 18:26:44 【问题描述】:

使用此查询,我需要在NULL 列中填充每一行的运行总计,该行对应于当前表的日历年、年初至今的支付金额。此运行总计应按member_id 分组。

SELECT id=identity(int,1,1), cast(null as numeric(22,3)) as max_running_total, *
INTO #temp
FROM Customer_DB..Sales_Table
ORDER BY Date_Column asc

UPDATE #temp
SET max_running_total = (SELECT SUM(paid_amount)
                         FROM #temp
                         WHERE id <= id
                         GROUP BY member_id)

【问题讨论】:

你的表结构在哪里? 您使用的是什么版本的 SQL Server? 2012+,还是 2008R2(或之前)? 对此感到抱歉。 SQL server 2008。我选择的表是大约 200,000 行交易数据,例如paid_amount、销售税、日期、member_id、会员名称等... 【参考方案1】:

由于您没有给出架构,因此我采用了示例架构并尝试了滚动总和。您可以使用相同的sql windows函数并实现您的结果

CREATE TABLE amt 
  ( 
     id            INT, 
     paid_amount   DECIMAL, 
     running_total DECIMAL 
  ) 

insert INTO amt VALUES (1, 100, NULL), (2, 50, NULL), (3, 50, NULL) 

SELECT id, paid_amount, 
 SUM(paid_amount) over(ORDER BY id ROWS BETWEEN unbounded preceding AND CURRENT ROW) AS running_total 
FROM amt

【讨论】:

窗口函数仅适用于 SQL Sever 2012 及更高版本。 这个功能在 2008 年可用吗?它也没有考虑member_id。我需要每个成员的运行总计,它显示该成员已支付了多少,YTD。

以上是关于SQL对“图书”表创建一个分组总计查询,统计不同出版社出版的图书数量,显示“?的主要内容,如果未能解决你的问题,请参考以下文章

按 ID 分组的 SQL 运行总计

怎样在数据库中查询出只有一条数据

SQL对查询结果进行分组

数据库查询: 列出表的所有字段,“*”符号,查询指定字段数据,DISTINCT查询,IN查询,BETWEEN AND查询,LIKE模糊查询,对查询结果排序,分组查询,统计分组查询

MySQL阶段二——sql语句基础

SQL实现分组查询取前几条记录