【发布时间】:2019-03-27 17:02:34
【问题描述】:
我有一个派生表,结果是这种格式:
THENAME | THESTATUS | THECOST
----------------------------------
name1 | statusX | cost1.1
name1 | statusX | cost1.2
name2 | statusZ | cost2.1
name2 | statusZ | cost2.1
name3 | statusY | cost3.1
(...)
nameN | status(X,Y,Z) | cost
每个 nameN 将始终具有相同的状态,但成本会有所不同。我试图想出一个看起来像这样的结果
Status Groups | Count of Names | Total Cost of Group
X 2 10
Y 5 20
Z 4 5
基本上,显示每个状态的总成本和每个状态包含的项目数。
追求类似的东西
SELECT
thestatus,
COUNT(DISTINCT thestatus),
SUM(thecost)
FROM THETABLE
GROUP BY thestatus
不起作用,我正在考虑是否可以同时对两列进行分组..
编辑 - https://www.db-fiddle.com/f/bB1RSy8GV35FGEi3Lr1Tqw/0
编辑 - 不确定它是 MySQL 的版本还是什么,但在示例数据中我认为它可以正常工作,但在实际查询中却没有。重新创建整个架构和整个查询是不可能的,但也许它是别的东西......
【问题讨论】:
-
statusX的简单值是多少?THESTATUS字符串的结构对于解决您的问题很重要。 -
statusX, statusY, statusZ 如果我正确理解了这个问题,这将是简单的值。该表源自具有多个连接的相当复杂的查询,它实际上并不存在于数据库中
-
您可以根据需要对任意数量的列进行分组。根据您的问题陈述,我认为您当前的查询没有任何问题。请编辑问题以添加一些示例数据和预期输出。见:meta.stackoverflow.com/q/333952/2469308
标签: mysql group-by sum aggregate-functions aggregation