Группировать по части поля varchar

#mysql #sql #&roup-by

#mysql #sql #группировать по

Вопрос:

У меня есть таблица SQL, представляющая запас продукта. Допустим, это выглядит так

 id - product - quantity
------------------------
1 -  water 1L  - 2
2 -  Coke 1L   - 3
3 -  water 5L  - 7
4 -  water 10L - 1
5 -  Coke 2L   - 3
  

Я хочу знать, сколько бутылок у меня есть на складе, возможно ли это сделать без добавления столбца с типом продукта и получить результат, подобный

 water - sum(quantity)
Coke  - sum(quantity)
  

Комментарии:

1. вместо нужного столбца у вас должна быть таблица отверстий для него, которая ссылается на нужный столбец, также один для размеров и, возможно, для типа bottle или can…

Ответ №1:

Если формат данных для столбца product фиксирован во всей таблице(все названия продуктов состоят из одного слова, за исключением литровой порции), то используйте

 SELECT SUBSTRING_INDEX(product,' ',1) AS product_common_def , SUM(quantity) AS quantity
  FROM tab
 GROUP BY product_common_def
  

Demo