Сумма столбца между любыми двумя датами? - PullRequest
0 голосов
/ 21 июня 2020

Допустим, у меня есть таблица с 3 столбцами: имя, дата, результат теста.

Я хочу найти сумму результатов теста человека между любыми двумя датами.

Как бы я мог сделать это в SQL?

Очевидно, мне понадобятся даты и человек (Имя) в качестве параметров, но я не уверен, куда go отсюда?

Ответы [ 2 ]

0 голосов
/ 21 июня 2020

Со следующей таблицей:

CREATE TABLE `marks` (
    `id`    INT AUTO_INCREMENT PRIMARY KEY,
    `name`  VARCHAR(255),
    `date`  DATETIME,
    `score` INT
);

Следующий выбор SQL отобразит список имен и их сумму:

SELECT
    `name`,
    SUM(`score`) AS `score_sum`
FROM `marks`
WHERE `date`
BETWEEN '2020-06-01 00:00:00'
    AND '2020-06-22 13:14:25'
GROUP BY `name`;

Но для вашего решения вы можете захотеть использовать:

SELECT
    SUM(`score`) AS `score_sum`
FROM `marks`
WHERE
    `name` = 'xxx'
AND `date`
    BETWEEN '2020-06-01 00:00:00'
    AND '2020-06-22 13:14:25';

Просто имейте в виду, что если для SUM нет значения, будет возвращено значение NULL.

0 голосов
/ 21 июня 2020

Обычно вы используете параметры в предложении where агрегированного запроса:

select sum(test_score) total_score
from mytable
where 
    date >= :start_date
    and date < :end_date
    and name = :name

:start_date, :end_date и :name - это параметры запроса, которые используются для фильтрации набора данных; запрос всегда возвращает одну строку с единственным столбцом с именем total_score, который содержит сумму test_score для строк, удовлетворяющих предикатам фильтрации. Если ни одна строка не соответствует, возвращается значение null.

...