Подсчитайте количество записей в таблице

У меня есть таблица 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

Просто сгруппируйте его по идентификатору и проверьте, содержится ли он в релевантных данных

Другие вопросы по тегам