格式:select 聚合函数(字段1),字段2 from 表名 where 条件 group by 字段2,字段3
1 2 3 4 5 6 7
SELECT p.date, pm.name payment_method, SUM(amount) total_payments FROM payments p, payment_methods pm WHERE p.payment_method = pm.payment_method_id GROUPBYdate, name;
通过HAVING子句过滤分组后的数据
格式:select 聚合函数(字段1),字段2 from 表名 where 条件 group by 字段2,字段3 having 过滤条件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
SELECT c.customer_id, c.first_name, c.last_name, SUM(oi.quantity * oi.unit_price) AS total_sales FROM customers c JOIN orders o USING(customer_id) JOIN order_items oi USING(order_id) WHERE state ='VA' GROUPBY c.customer_id, c.first_name, c.last_name HAVING total_sales>100;
ROLLUP 运算符
用于计算总和,但只能用于聚合值的列,且使用时,GROUP BY 后的字段不能用别名 注:ROLLUP只适用于Mysql
1 2 3 4 5 6 7
SELECT name payment_method, SUM(p.amount) total FROM payments p JOIN payment_methods pm ON p.payment_method = pm.payment_method_id GROUPBY name WITHROLLUP