我有一个名为std::vector
的列,其中包含三种值purchasetype
,new
,trial
,new,trial
中的另一列
我正在根据noofsales
计算总数
我正在使用的查询是
purchasetype
此查询为我提供了三种求和结果 Select SUM(noofsales)
From table
GroupBy purchasetype
,new
和trial
我只希望new,trial
和new
中的总和是只有一条记录包含trial
的情况,然后new,trial
的计数应该增加,而new
的计数应该增加< br />
我尝试使用像
trial
但这只是针对逗号分隔值中的第一条记录进行汇总。
答案 0 :(得分:0)
根据您的情况,您可以对每个金额使用CASE / WHEN语句。例如:
答案 1 :(得分:0)
您可以动态创建一个数字表,并使用它来将purchase_type
是逗号分隔的值的记录转换为新行。然后,在外部查询中,您可以正确聚合。
考虑以下查询,您可以在this db fiddle中看到该查询。它将动态发现可用的购买类型并生成您期望的结果:
SELECT x.purchase_type, SUM(x.noofsale)
FROM (
SELECT
t.noofsale,
SUBSTRING_INDEX(SUBSTRING_INDEX(t.purchase_type, ',', numbers.n), ',', -1) purchase_type
FROM
(SELECT 1 n UNION SELECT 2) numbers
INNER JOIN t ON CHAR_LENGTH(t.purchase_type) - CHAR_LENGTH(REPLACE(t.purchase_type, ',', ''))>= numbers.n-1
) x
GROUP BY x.purchase_type
ORDER BY 1,2
NB:此查询最多支持两个逗号分隔的值(如示例数据中所示);如果您期望的更多,则可以改编numbers
子查询:
(SELECT 1 n UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 ...)