Как группировать и считать по определенным критериям? - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть стол с машинами и гаражами.Каждый автомобиль указан только в одном гараже, но в одном гараже может быть много машин.Я хочу знать, сколько автомобилей каждого типа есть в гараже.Каждый автомобиль имеет свою собственную строку в базе данных.

Таблица выглядит следующим образом.

+-------+--------+-----+
|carType| garage |id   |
+-------+--------+-----+
| 1     | 1      | 1   |
+-------+--------+-----+
| 1     | 1      | 2   |
+-------+--------+-----+
| 1     | 2      | 3   |
+-------+--------+-----+
| 2     | 2      | 4   |
+-------+--------+-----+

Это то, что я хочу получить.

+-------+------------+--------+
|carType| carCount   | garage |
+-------+------------+--------+
| 1     | 2          | 1      |
+-------+------------+--------+
| 1     | 1          | 2      |
+-------+------------+--------+
| 2     | 1          | 2      |
+-------+------------+--------+

проблема в том, что я понятия не имею, как должен выглядеть запрос.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Моя первая попытка ответить на что-то здесь, надеюсь, это сработает! Как говорит Гордон, Hint Group By, если внизу не так, пожалуйста, кричите Гордон.

with t
as
(select * from(values(1,1,1),(1,1,2),(1,2,3),(2,2,4)) as t (carType,garage,id))

select carType, count(id) as carCount, garage
from t
group by carType, garage
0 голосов
/ 14 апреля 2019

Вам просто нужно GROUP BY carType и garage:

SELECT carType, COUNT(*) AS carCount, garage
FROM cars
GROUP BY carType, garage

Вывод:

carType garage  carCount
1       1       2
1       2       1
2       2       1

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...