sql—任意两个日期之间列的总和?

whitzsjs  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(336)

假设我有一个3列的表,名称,日期,测试分数。
我想找出一个人在两次约会之间的考试成绩之和。
如何在sql中执行此操作?
很明显,我需要日期和人(名字)作为参数,但我不知道从这里去哪里?

b09cbbtk

b09cbbtk1#

通常使用 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` 对于满足筛选 predicate 的行。如果没有匹配的行,则返回值为 `null` .
btqmn9zl

btqmn9zl2#

使用下表:

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

以下select 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';

请记住,如果没有要求和的值,将返回null。

相关问题