SQL-запрос для подсчета за определенный период - PullRequest
0 голосов
/ 05 января 2011

У меня есть такая таблица:

-------------------------------
| NrOfVisitors | Year | Month |
-------------------------------
| 320          | 2009 | 1     |
-------------------------------
| 300          | 2009 | 2     |
-------------------------------
| 150          | 2010 | 1     |
-------------------------------
| 100          | 2010 | 2     |
-------------------------------

Теперь я хочу считать посетителей до 1-го месяца 2010 года. Когда я говорю:

SELECT SUM(NrOfVisitors) As TotalVisitors FROM VisitorTable WHERE YEAR <= 2010 AND Month <= 1

ТогдаЯ не получаю количество посетителей, потому что тогда он не учитывает посетителей за 2-й месяц 2009 года. Поэтому мне не хватает 300 посетителей с этим запросом.Так что мне нужен запрос для подсчета NrOfVisitors до 2010 месяца 1

Кто может мне помочь с этим /

Заранее спасибо!

Ответы [ 5 ]

1 голос
/ 05 января 2011

Попробуйте это:

SELECT SUM(NrOfVisitors) As TotalVisitors
FROM VisitorTable
WHERE Year * 12 + Month <= 2010 * 12 + 1
0 голосов
/ 05 января 2011

ВЫБЕРИТЕ СУММУ (NrOfVisitors) как TotalVisitors ОТ VisitorTable ГДЕ ГОД <= 2010 ИЛИ (ГОД = 2010 И МЕСЯЦ = 1) </p>

0 голосов
/ 05 января 2011

Разве это не должно быть

SELECT SUM(NrOfVisitors) As TotalVisitors FROM VisitorTable WHERE YEAR <= 2010 AND Month >= 1?

Я просто изменил Month <= 1 на Month >= 1, потому что, ну, 2> 1.

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

0 голосов
/ 05 января 2011

В этом случае вы можете просто использовать ИЛИ

WHERE YEAR <= 2010 OR MONTH <= 1

Чтобы быть более общим, например,

WHERE YEAR < 2010 OR (YEAR = 2010 AND MONTH <=1)
0 голосов
/ 05 января 2011

Просто удалите: И Месяц <= 1?Отредактируйте: также сделайте: ГДЕ ГОД <= 2010 к: ГДЕ ГОД <2010 </p>

Это должно работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...