Подсчитать сумму значений столбца в операторе SELECT - PullRequest
0 голосов
/ 05 марта 2010

У меня есть table, где я должен рассчитывать, если пользователь достиг такого количества штрафов, как 3, поэтому, если пользователь наберет или превысит 3 очка, его забанят:

table_warnings
- id
- user_id
- warning
- warning_date

id    user_id     warning    warning_date
1     5478        1          2010-02-25 12:59:00
2     5478        1          2010-02-28 08:27:00
3     5478        2          2010-03-01 22:44:11

Я начал этот вопрос , где пользователь KM помог мне найти решение SELECT, подобное этому:

SELECT COUNT(warning)
FROM table_warnings AS w
INNER JOIN table_users AS u
ON w.user_id = u.user_id
WHERE w.user_id = 5478 AND warning_date >= '2010-02-05 12:59:00'
HAVING COUNT(warning) >= 3

Могу ли я найти для SELECT способ узнать, сколько очков пенальти получил пользователь за последние 30 дней?

1 Ответ

5 голосов
/ 05 марта 2010

Что такое столбец "warn_penalty". Могу ли я предположить, что это так же, как «предупреждение»? Если это так, просто измените COUNT () на SUM (). С некоторыми дополнительными исправлениями для устранения второй таблицы:

SELECT user_id, SUM(warning)
FROM table_warnings 
WHERE  warning_date >= '2010-02-05 12:59:00'
GROUP BY user_id
HAVING SUM(warning) >= 3

вернет всех заблокированных пользователей.

В качестве альтернативы, если у вас есть user_id и вы хотите знать, запрещен он или нет:

SELECT SUM(warning)
FROM table_warnings 
WHERE user_id = 5478 AND warning_date >= '2010-02-05 12:59:00'

и проверьте результат.

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