#sql
Вопрос:
Допустим, у вас есть следующая таблица:
ID | Дата | регион | Случаи |
---|---|---|---|
1 | 2013-06-01 | Северная Каролина | 3 |
2 | 2013-06-01 | NA | 5 |
3 | 2013-06-02 | Северная Каролина | 7 |
4 | 2013-06-02 | NA | 2 |
Я хочу выбрать (дату, регион, случаи) только тогда, когда случаи NC больше, чем случаи NA в данный день. Например, строки 3 и 4 удовлетворяют этому условию.
Желаемый результат:
ID | Дата | регион | Случаи |
---|---|---|---|
3 | 2013-06-02 | Северная Каролина | 7 |
4 | 2013-06-02 | NA | 2 |
Комментарии:
1. Пожалуйста, добавьте желаемый результат …
Ответ №1:
Вы можете получить Date
s, которые удовлетворяют вашему условию, с помощью условной агрегации:
SELECT Date
FROM tablename
GROUP BY Date
HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
MAX(CASE WHEN region = 'NA' THEN Cases END)
Используйте приведенный выше запрос в качестве подзапроса:
SELECT *
FROM tablename
WHERE Date IN (
SELECT Date
FROM tablename
GROUP BY Date
HAVING MAX(CASE WHEN region = 'NC' THEN Cases END) >
MAX(CASE WHEN region = 'NA' THEN Cases END)
)
Смотрите демонстрацию.