【写SQL语句】按照用户统计对应订单数和订单总金额?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【写SQL语句】按照用户统计对应订单数和订单总金额?相关的知识,希望对你有一定的参考价值。

现在是需要列表按用户显示对应的订单数,及对应的订单总金额;如何写SQL语句 执行效率高,数据库订单数量较大; 数据表结构请看下图(大概结构,最后一个是需要输出的结果)

SELECTUIDas用户,COUNT(ORDER_SN)as订单总数,SUM(TOTAL)as合计总金额FROM订单表groupbyuid。

selectname,totalamountfrom(

selecta。name,sum(x.xfje)astotalamountfrombookasa

innerjoinxfjlasxona.id=x.khid

groupbya.name

orderbytotalamount;

常见语句

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)

排序:select * from table1 order by field1,field2 [desc]

求和:select sum(field1) as sumvalue from table1

以上内容参考:百度百科-语句

参考技术A

SELECT UID as 用户 ,COUNT(ORDER_SN)as 订单总数,SUM(TOTAL)as 合计总金额 FROM 订单表 group by uid.

用户,广泛的含义是使用者,即使用你的产品或服务的一方。一般是指城镇、农村接受社会某种有偿服务的客户。如:供水、宽带、通信、供暖、煤气等客户。

订单(orderform)是企业采购部门向供应商发出的定货凭据,包含成品、原材料、燃料、零部件、办公用品、服务等全部采购过程。

结构化查询语言是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同 数据库系统,,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。 1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。

参考技术B SELECT UID as 用户 ,COUNT(ORDER_SN)as 订单总数,SUM(TOTAL)as 合计总金额 FROM 订单表 group by uid追问

谢谢!就是要这个,再请教一个 问题, 在列表最底部显示全部订单数和订单总金额,单独统计一次吗?

追答

是的得另外用查询语句

本回答被提问者采纳

LeetCode:Database 114.按月统计订单数与顾客数

要求:写一个查询语句来 按月 统计 金额大于 $20 的唯一 订单数 和唯一 顾客数 。

表:Orders的结构

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| order_id      | int     |
| order_date    | date    |
| customer_id   | int     |
| invoice       | int     |
+---------------+---------+
order_id 是 Orders 表的主键。
这张表包含顾客(customer_id)所下订单的信息。

Orders 表:

+----------+------------+-------------+------------+
| order_id | order_date | customer_id | invoice    |
+----------+------------+-------------+------------+
| 1        | 2020-09-15 | 1           | 30         |
| 2        | 2020-09-17 | 2           | 90         |
| 3        | 2020-10-06 | 3           | 20         |
| 4        | 2020-10-20 | 3           | 21         |
| 5        | 2020-11-10 | 1           | 10         |
| 6        | 2020-11-21 | 2           | 15         |
| 7        | 2020-12-01 | 4           | 55         |
| 8        | 2020-12-03 | 4           | 77         |
| 9        | 2021-01-07 | 3           | 31         |
| 10       | 2021-01-15 | 2           | 20         |
+----------+------------+-------------+------------+

Result Table:

+---------+-------------+----------------+
| month   | order_count | customer_count |
+---------+-------------+----------------+
| 2020-09 | 2           | 2              |
| 2020-10 | 1           | 1              |
| 2020-12 | 2           | 1              |
| 2021-01 | 1           | 1              |
+---------+-------------+----------------+
在 2020 年 09 月,有 2 份来自 2 位不同顾客的金额大于 $20 的订单。
在 2020 年 10 月,有 2 份来自 1 位顾客的订单,并且只有其中的 1 份订单金额大于 $20 。
在 2020 年 11 月,有 2 份来自 2 位不同顾客的订单,但由于金额都小于 $20 ,所以我们的查询结果中不包含这个月的数据。
在 2020 年 12 月,有 2 份来自 1 位顾客的订单,且 2 份订单金额都大于 $20 。
在 2021 年 01 月,有 2 份来自 2 位不同顾客的订单,但只有其中一份订单金额大于 $20 。

SQL语句:

select substr(order_date,1,7) as month,count(order_id) as order_count,count(distinct customer_id) as customer_count
from orders
where invoice>20
group by substr(order_date,1,7);

以上是关于【写SQL语句】按照用户统计对应订单数和订单总金额?的主要内容,如果未能解决你的问题,请参考以下文章

TP SQL统计查询语法

MySQL触发器的使用规则

ThinkPHP按月统计订单总金额

14.SQL语句[6] 聚合分组

BigDataJava基础_创建一个订单类

2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三