Я хочу отображать один раз в нескольких строках с 2 GROUP_BY
Моя таблица такая
+----+----------+-------+
| ID | BRAND | TYPE |
+----+----------+-------+
| 1 | A | Clothes |
| 2 | A | Hat |
| 3 | A | Hat |
| 4 | A | Hat |
| 5 | B | Jeans |
| 6 | B | Jeans |
| 7 | B | Hat |
| 8 | C | Clothes |
| 9 | C | Jeans |
| 10 | C | Jeans |
| 11 | C | Hat |
+----+-------+-----------+
И мой запрос вроде этого
SELECT brand,
type,
COUNT(*) AS total
FROM store
GROUP BY brand, type
Когда я запускаю этот запрос, результат
-----------------------------
| BRAND | TYPE | TOTAL |
-----------------------------
| A | Clothes | 1 |
| A | Hat | 3 |
| B | Jeans | 2 |
| B | Hat | 1 |
| C | Clothes | 1 |
| C | Jeans | 2 |
| C | Hat | 1 |
------------------------------
Я не ожидал такого результата. Я просто хочу отобразить один раз Brand, а со следующим Type также отобразить один раз, если есть несколько одинаковых значений.
ОБНОВЛЕНИЕ: ожидайте результата
-------------------------------------------
| BRAND | TYPE | TOTAL |
-------------------------------------------
| A | Clothes, Hat | 4 |
| B | Jeans, Hat | 3 |
| C | Clothes, Jeans, Hat | 4 |
-------------------------------------------
Italien невозможно, если вы хотите показать оба столбца brand и type. Если вы сгруппируете столбец brand, что вы ожидаете увидеть в столбце type, поскольку там несколько (разных) значений сгруппированы вместе?
@jarlh обновленный вопрос
Если type целочисленный, возможно ли это?






Ваше описание предлагает мне сделать условную агрегацию:
SELECT brand,
COUNT(DISTINCT CASE WHEN TYPE = 'Clothes' THEN TYPE END) AS Clothes,
COUNT(DISTINCT CASE WHEN TYPE = 'Hat' THEN TYPE END) AS Hat,
COUNT(DISTINCT CASE WHEN TYPE = 'Jeans' THEN TYPE END) AS Jeans
FROM store s
GROUP BY brand;
Если вам нужна одна строка с несколькими типами, вы можете использовать GROUP_CONCAT:
SELECT brand, GROUP_CONCAT(DISTINCT TYPE) As TYPE, COUNT(total) AS total
FROM store s
GROUP BY brand;
Group_Concat с предложением Distinct, вы можете получить все разные типы и типы уникальный в строке, разделенной запятыми, в группе brand.Sum, чтобы вычислить общуюПопробуйте следующее:
SELECT brand,
GROUP_CONCAT(DISTINCT type) As type,
SUM(total) AS total
FROM store
GROUP BY brand
Обновлено: О, вот оно! Это отлично работает с моим кодом! Большое спасибо
при этом вы получаете только один тип для каждой марки
ВЫБЕРИТЕ марку, Макс. (Тип) Тип КА, СЧЁТ (*) КАК всего В магазине 444 р. ГРУППА ПО БРЕНДУ
Укажите ожидаемый результат.