有没有办法在一次查询中得到所有产品的类别和所有产品的总价的总价。下面是我使用的按类别给出价格的查询。
SELECT SUM(price) as totalprice FROM products Group BY category_id
z18hc3ub1#
使用ROLLUP查询。GROUP BY子句允许使用WITH ROLLUP修饰符,该修饰符会将额外的行添加到摘要输出中。
ROLLUP
SELECT category_id,SUM(price) as totalprice FROM products GROUP BY category_id WITH ROLLUP
s71maibg2#
SELECT category_id, SUM(price) as totalprice FROM products GROUP BY category_id WITH ROLLUP
MySQL Manual: GROUP BY ModifiersGROUP BY子句允许使用WITH ROLLUP修饰符,该修饰符使汇总输出包括表示更高级别(即超级聚合)汇总操作的额外行。因此,ROLLUP使您能够通过一个查询在多个分析级别上回答问题。例如,ROLLUP可用于提供对OLAP(联机分析处理)操作的支持。给定以下示例数据:| id|姓名|类别id|价格|| - -----|- -----|- -----|- -----|| 1| prod_1| 1|两点|| 2| prod_2| 1|三点|| 3| prod_3| 2|四点|| 4| prod_4| 2|五点|| 5个|prod_5| 2|六点|上述查询将输出:| 类别id|总价|| - -----|- -----|| 1|五点|| 2|十五点|| 空值|20点|您可以扩展上述内容,使用GROUPING()函数来区分超级聚合行中的NULL值和常规分组行中的NULL值:
GROUPING()
NULL
SELECT IF(GROUPING(category_id), 'All categories', category_id) AS category_id, SUM(price) as totalprice FROM products GROUP BY category_id WITH ROLLUP
其将输出:| 类别id|总价|| - -----|- -----|| 1|五点|| 2|十五点|| 所有类别|20点|
2条答案
按热度按时间z18hc3ub1#
使用ROLLUP查询。
GROUP BY子句允许使用WITH
ROLLUP
修饰符,该修饰符会将额外的行添加到摘要输出中。s71maibg2#
MySQL Manual: GROUP BY Modifiers
GROUP BY子句允许使用WITH ROLLUP修饰符,该修饰符使汇总输出包括表示更高级别(即超级聚合)汇总操作的额外行。因此,ROLLUP使您能够通过一个查询在多个分析级别上回答问题。例如,ROLLUP可用于提供对OLAP(联机分析处理)操作的支持。
给定以下示例数据:
| id|姓名|类别id|价格|
| - -----|- -----|- -----|- -----|
| 1| prod_1| 1|两点|
| 2| prod_2| 1|三点|
| 3| prod_3| 2|四点|
| 4| prod_4| 2|五点|
| 5个|prod_5| 2|六点|
上述查询将输出:
| 类别id|总价|
| - -----|- -----|
| 1|五点|
| 2|十五点|
| 空值|20点|
您可以扩展上述内容,使用
GROUPING()
函数来区分超级聚合行中的NULL
值和常规分组行中的NULL
值:其将输出:
| 类别id|总价|
| - -----|- -----|
| 1|五点|
| 2|十五点|
| 所有类别|20点|