使用 SQL 查询用户数据:姓名、总花费、订单数量和最近订单时间

本文档展示如何使用 SQL 查询语句从 UsersOrders 表中获取用户数据,包括姓名、总花费、订单数量和最近订单时间。

数据库表结构:

Orders

CREATE TABLE `Orders` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '订单的唯一标识符',
  `user_id` int NOT NULL COMMENT '订单所属用户的唯一标识符',
  `status` varchar(255) NOT NULL COMMENT '订单的状态',
  `total` decimal(10,2) NOT NULL COMMENT '订单的总金额',
  `payment_method` varchar(255) NOT NULL COMMENT '订单的支付方式',
  `shipping_method` varchar(255) NOT NULL COMMENT '订单的配送方式',
  `shipping_address` varchar(255) NOT NULL COMMENT '订单的配送地址',
  `shipping_phone` varchar(255) NOT NULL COMMENT '订单的配送电话',
  `shipping_time` timestamp NULL DEFAULT NULL COMMENT '订单的配送时间',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单的创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单的更新时间',
  PRIMARY KEY (`id`)
)

Users

CREATE TABLE `Users` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '用户的唯一标识符',
  `email` varchar(255) NOT NULL COMMENT '用户的邮箱地址',
  `password` varchar(255) NOT NULL COMMENT '用户的密码',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户的名字',
  `default_address_id` int DEFAULT NULL COMMENT '用户的默认地址',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户的创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '用户的更新时间',
  `permission` varchar(255) NOT NULL COMMENT '用户的权限',
  PRIMARY KEY (`id`,`email`) USING BTREE
)

SQL 查询语句:

SELECT u.name AS user_name, SUM(o.total) AS total_spent, COUNT(o.id) AS order_count, MAX(o.updated_at) AS last_order_time
FROM Users u
LEFT JOIN Orders o ON u.id = o.user_id
WHERE u.id = [用户id]
GROUP BY u.id;

解释:

  • SELECT: 选择要返回的列。
  • u.name AS user_name: 选择用户名字列,并将其别名为 user_name
  • SUM(o.total) AS total_spent: 计算所有订单总金额的总和,并将其别名为 total_spent
  • COUNT(o.id) AS order_count: 统计用户订单数量,并将其别名为 order_count
  • MAX(o.updated_at) AS last_order_time: 获取用户最后一次订单的时间,并将其别名为 last_order_time
  • FROM Users u: 从 Users 表中选择数据,并将其别名为 u
  • LEFT JOIN Orders o ON u.id = o.user_id: 左连接 UsersOrders 表,根据 user_id 列匹配对应数据。
  • WHERE u.id = [用户id]: 过滤符合指定用户 ID 的数据。
  • GROUP BY u.id: 按照 user_id 进行分组,以便进行聚合计算。

执行查询后,将返回以下数据:

  • user_name: 用户的名字
  • total_spent: 用户总花费
  • order_count: 用户订单数量
  • last_order_time: 用户最后一次订单时间

注意:

  • [用户id] 替换为实际的用户 ID。
  • 该查询语句可以帮助您从 UsersOrders 表中获取用户的信息,并进行分析和统计。

希望本文档能帮助您理解如何使用 SQL 查询语句获取用户相关信息。


原文地址: https://www.cveoy.top/t/topic/nGFt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录