Member 13047430 Ответов: 2

Подсчитайте отсутствие записи с условием в sqlserver ?


Таблица Счетов
------------------
cases| type |
------------------
 A1  | UNDER
------------------
 A1  | UNDER
------------------
 B1  | OVER
------------------
 B1  | UNDER
------------------
 B1  | OVER
------------------
 C1  | OVER
------------------
 C1  | OVER
-----------------
 D1 | UNDER
----------------
 E1 | OVER
----------------
 E1 | UNDER


Что я уже пробовал:

1.COUNT THE CASES WHERE ALL ITERATION of TYPE IS "UNDER" FOR THE CASES
 (see A1 iteration is having all UNDER it would give COUNT 1)

я пытался получить запись, но она дает мне каждую запись, которая имеет "под"
количество результатов должно быть только 1
выберите COUNT(CASEID) из учетных записей, где TYPE="UNDER" -> Это не дает должного результата

2 Ответов

Рейтинг:
2

Patrice T

Фильтрация "под" - это неправильный подход, потому что он удаляет информацию о том, что не "под".
Я бы атаковал эту проблему с помощью 2 каскадных выборок.
Первый делает синтез базы данных:
поле наблюдения
полевые записи: count(CASEID)
поле unders: sum(if(TYPE="UNDER", 1, 0))

select CASEID, count(CASEID) as records, sum(if(TYPE="UNDER", 1, 0)) as unders GROUP BY CASEID

caseid records unders
 A1     2       2
 B1     3       1
 C1     2       0
 D1     1       1
 E1     2       1

Во втором случае вы сравниваете записи и unders, чтобы знать, какой caseid хранить в соответствии с вашими потребностями.
Оставлено как упражнение.


Рейтинг:
2

OriginalGriff

Перечитайте вопрос еще раз: вы немного упустили.
Он хочет, чтобы вы считали каждый другой cases значение, которое имеет type из "под", ни одного значения результата:

A1 2
B1 1
C1 0
D1 1
E1 1
Для этого вам понадобится предложение GROUP BY.

Но это твое домашнее задание, так что я не собираюсь давать тебе код просто так!
Дайте ему попробовать и посмотреть, как далеко вы можете получить...


Member 13047430

это не домашнее задание, кстати, это сценерио, которое я извлек из своего отчета о проекте.
и еще одно ваше понимание неверно

я хочу, чтобы количество случаев, которые имеют под собой только среднее значение A1, было единственным случаем, когда все находятся под таким результатом подсчета, будет 1


он не будет считать другие случаи, потому что у него нет всего под одним случаем