SQL:如何访问值(并忽略重复项)并按日期对它们进行分组

时间:2015-08-28 13:11:18

标签: c# sql database postgresql npgsql

我正在使用C#.NET和NPGSQL与postgresql数据库进行交互。 目前,我的表看起来有点像这样:

  +----------------------------+
  | worked_hours     dates     |
  +----------------------------+
  | 0             01.08.2015   |
  | 0             01.08.2015   |
  | 0             01.08.2015   |
  | ....          .....        |
  | 3.83                       |
  | 3.83                       |
  | 3.83                       |
  | ....                       |
  | 4.79                       |
  | 4.79          ....         |
  | 4.79          01.08.2015   |
  | ....          ....         |
  +----------------------------+

这只是30天内的1天。

我想用这张桌子来获得每天工作时数的总和

你知道我怎么能做到这一点吗?

4 个答案:

答案 0 :(得分:1)

您的问题似乎假设每天的所有值都相同。也许这不是一个合理的假设。

您需要获取不同的值,然后对它们求和。这是Postgres中的一种方法:

select sum(worked_hours)
from (select distinct on (date) t.*
      from table t
      order by date
     ) t;

另一种方法可能是对每天的平均值求和:

select sum(avgwh)
from (select date, avg(worked_hours) as avgwh
      from table t
      group by date
     ) t;

答案 1 :(得分:1)

GROUP BY column_name

之后使用SELECT
SELECT column1, column2, ... , columnN 
FROM table1
GROUP BY column2

答案 2 :(得分:0)

select sum(worked_hours), dates 
from table 
group by dates

答案 3 :(得分:0)

尝试下面的内容 - 替换表名。

          select sum(worked_hours), CONVERT(VARCHAR,dates,101) AS [DateAdded] 
           from TableName GROUP by CONVERT(VARCHAR,dates,101)