在sql表

时间:2015-12-11 19:15:49

标签: sql

我对sql比较新,所以这可能很简单。我有一张桌子,可以记录每天的人数。它看起来像这样;

person1 | person2 | person3 | Date
__________________________________
2       | 4       | 5       | 12/2/2015
__________________________________
3       |  5      |  6      | 12/1/2015

我想要做的是添加另一列,列出每天完成的总数。像这样:

person1 | person2 | person3 | Date       | Total completed
___________________________________________________________
2       | 4       | 5       | 12/2/2015  | 11
___________________________________________________________
3       |  5      |  6      | 12/1/2015  | 14

我知道如何在列上使用SUM(),但它似乎不适用于行。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

在表格中添加另一列Total_completed并执行更新语句,如下所示

update your_table
set total_completed = person1+person2+person3

但是如果你想在不向表中添加新列的情况下选择相同的,你可以简单地执行如下的select语句

select person1,person2,person3,[date],person1+person2+person3 as total from 
your_table

答案 1 :(得分:1)

我认为您提出的问题突出了表格和数据库设计的更深层次问题,特别是与规范化概念有关。

如果一天完成任务的人数发生变化会怎样?如果只有一两个人完成任务,你可以只填写一些列,但如果你有三个以上的人会怎么样?添加其他列意味着需要重写访问该表的任何查询以利用新列,并且需要更新具有三个或更少条目的表条目以使用值填充新列(或适当地处理NULL)

我建议一个看起来更像下面的表结构:

table PEOPLE:
personID integer, 
(...other information about the person)

table PEOPLE_TASKS_COMPLETED:
personID integer, (this will point at a row in the PEOPLE table)
tasksCompleted integer,
dateCompleted date

以这种方式分解您的数据可让您查找特定日期任何人数完成的任务总数,使用如下查询:

select dateCompleted, SUM(tasksCompleted)
from PEOPLE_TASKS_COMPLETED
GROUP BY dateCompleted

答案 2 :(得分:0)

假设你person1,person2,person3列是相同的数据类型(INT?),以下查询应该这样做。

SELECT person1, person2, person3, Date, person1+person2+person3 as TotalCompleted
FROM yourtable