我有一个不同项目的列表,其中一些在最后有尺寸和颜色说明。例如。男式足球夹克 - L / 黑色。
我希望能够对所有男士足球夹克产品进行分组,无论其尺寸或颜色如何。
╔═══════════════════════════════════╤══════╗
║ Item │ Sold ║
╠═══════════════════════════════════╪══════╣
║ Men's Football Jacket - L / Blue │ 5 ║
╟───────────────────────────────────┼──────╢
║ Men's Football Jacket - M / Black │ 3 ║
╟───────────────────────────────────┼──────╢
║ Women's Socks - S │ 8 ║
╟───────────────────────────────────┼──────╢
║ Women's Socks - L │ 10 ║
╟───────────────────────────────────┼──────╢
║ Gloves │ 12 ║
╚═══════════════════════════════════╧══════╝
Output:
╔═══════════════════════╤══════╗
║ Item │ Sold ║
╠═══════════════════════╪══════╣
║ Men's Football Jacket │ 8 ║
╟───────────────────────┼──────╢
║ Women's Socks │ 18 ║
╟───────────────────────┼──────╢
║ Gloves │ 12 ║
╚═══════════════════════╧══════╝
从示例中可以看出,有些项目在字符串中只有大小,其他项目既没有指定大小也没有指定颜色。
如果这有所作为,我将使用 MySQL。
答案 0 :(得分:1)
如果要按 Item 的值进行分组,直到第一个 -
,请使用 SUBSTRING_INDEX()
提取字符串的那部分:
SELECT SUBSTRING_INDEX(Item, '-', 1) Item,
SUM(Sold) Sold
FROM tablename
GROUP BY SUBSTRING_INDEX(Item, '-', 1)
参见demo。
结果:
> Item | Sold
> :-------------------- | ---:
> Gloves | 12
> Men's Football Jacket | 8
> Women's Socks | 18
答案 1 :(得分:1)
如果值总是由空格-连字符-空格分隔,那么只需使用substring_index()
:
select substring_index(item, ' - ', 1) as item,
sum(sold)
from t
group by substring_index(item, ' - ', 1) ;