Как подсчитать строки с предложением where в SQL Server? - PullRequest
0 голосов
/ 03 мая 2020

Я застрял с проблемой, с которой сталкиваюсь SQL Сервер. Я хочу показать в запросе, сколько раз встречается указанное значение c. Это довольно легко сделать, но я хочу сделать еще один шаг вперед, и я думаю, что лучший способ объяснить, что я пытаюсь достичь, это объяснить это с помощью изображений.

У меня есть две таблицы: Растение и Сундук

Как видно из сундука, столбец "hoeveelheid" говорит о том, насколько полный сундук, "vol" == 1 и 3/4 == 0,75. В таблице растений есть столбец «Hoeveelheidperkist», который показывает, сколько растений может быть в 1 сундуке.

select DISTINCT kist.Plantnaam, kist.Plantmaat, count(*) AS 'Amount'
from kist

group by kist.plantnaam, kist.Plantmaat

Этот запрос подсчитывает все сундуки, но он не разделяет количество сундуков 'Vol' и сундуков '3/4'. Это только Это . Чего я хочу добиться, так это . Но я понятия не имею, как. Любая помощь будет высоко ценится.

Ответы [ 2 ]

0 голосов
/ 03 мая 2020


Привет Лу c,

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

select DISTINCT kist.Plantnaam, kist.Plantmaat, count(*) AS 'Amount'
from kist

group by kist.plantnaam, kist.Plantmaat having count(*) = 1 -- or provide necessary conditions
0 голосов
/ 03 мая 2020

Если вы используете группу, вам не нужны отдельные
, и если вы хотите разделить счет для hoeveelheid, вы должны добавить в группу по пункту

    select DISTINCT kist.Plantnaam, kist.Plantmaat, kist.hoeveelheid, count(*) AS 'Amount'
    from kist
    group by kist.plantnaam, kist.Plantmaat, hoeveelheid

или если вы хотите, чтобы все 3 Подсчитайте количество строк, которые вы можете использовать, например:

    select DISTINCT kist.Plantnaam, kist.Plantmaat
     , sum(case when kist.hoeveelheid ='Vol' then 1 else  0 end) vol 
     , sum(case when kist.hoeveelheid ='3/3' then 1 else  0 end) 3_4 
     , count(*) AS 'Amount'
    from kist
    group by kist.plantnaam, kist.Plantmaat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...