在SQL中,我们可以使用GROUP BY子句来按不同的主键列和聚合函数进行分组。以下是一个示例解决方案:
假设我们有一个名为"orders"的表,其中包含订单信息,包括订单编号、客户名称、订单日期和订单总金额。我们想按客户名称和聚合函数来计算每个客户的订单总金额、最大订单金额和最小订单金额。
首先,创建一个名为"orders"的表并插入一些示例数据:
CREATE TABLE orders (
order_id INT,
customer_name VARCHAR(100),
order_date DATE,
order_amount DECIMAL(10, 2)
);
INSERT INTO orders (order_id, customer_name, order_date, order_amount)
VALUES
(1, 'Customer A', '2021-01-01', 100.00),
(2, 'Customer A', '2021-02-01', 200.00),
(3, 'Customer B', '2021-01-01', 150.00),
(4, 'Customer B', '2021-02-01', 250.00),
(5, 'Customer B', '2021-03-01', 300.00);
然后,使用GROUP BY子句按客户名称进行分组,并使用SUM()、MAX()和MIN()聚合函数计算每个客户的订单总金额、最大订单金额和最小订单金额:
SELECT
customer_name,
SUM(order_amount) AS total_amount,
MAX(order_amount) AS max_amount,
MIN(order_amount) AS min_amount
FROM orders
GROUP BY customer_name;
运行以上代码,将得到以下结果:
customer_name | total_amount | max_amount | min_amount
--------------+--------------+------------+------------
Customer A | 300.00 | 200.00 | 100.00
Customer B | 700.00 | 300.00 | 150.00
这样,我们就成功按不同的主键列(客户名称)和聚合函数(总金额、最大金额、最小金额)进行了分组。