Подсчитайте количество записей в таблице
У меня есть таблица allData
имя 1 мясо 2 курица 3 рыбы 4 курица 5 рыб 6 куриных
и таблица релевантных данных
имя 1 мясо 2 рыбы
Я хочу посчитать общее количество вхождений на имя в allData
, но только для имен, которые появляются в relevantData
, Т.е. результат, который я хочу получить:
количество имен 1 мясо 1 2 рыбы 2
Я думал о запросе:
Select count(*) from allData group by name
Не уверен, как я соотносюсь с relevantData
, Какие-нибудь мысли?
4 ответа
Решение
Изменить точку зрения, вы заинтересованы в relevantData
это основа вашего запроса. Вы можете использовать коррелированный подзапрос, нет необходимости использовать соединение или группирование по:
SELECT rd.name,
(SELECT COUNT(*) FROM allData ad WHERE rd.name = ad.name) AS Count
FROM relevantData rd
Просто соедините их вместе:
SELECT a.id, a.name, COUNT(*) AS CntCol
FROM allData a
INNER JOIN relevantData r ON a.name = r.name
GROUP BY a.id, a.name
Вы можете попробовать следующее.
SELECT COUNT(*) FROM allData WHERE name in (SELECT name from relevantData) GROUP BY name
Попробуй это:
SELECT a.name, Count(1) AS TotalCount
FROM allData a
WHERE EXISTS(SELECT TOP 1 1 FROM relevantData WHERE a.name = name)
GROUP BY a.name
Просто сгруппируйте его по идентификатору и проверьте, содержится ли он в релевантных данных