【发布时间】:2015-03-26 16:02:18
【问题描述】:
我需要在 SQL Server 中编写一个 SQL 查询,我希望我能解释我所追求的。我有几年的数据。这是一些数据库的示例。
我想要做的是每周获取价值 New_Zealand 的 Bovine 总数。
因此,对于 2013-01-12 周,总值将为 36080(该周动物为牛的新西兰的总和)。在数据库中的所有星期重复此操作。
我目前有这个 SQL 选择语句。
SELECT SUM(New_Zealand)
FROM Slaughter_Data
WHERE Animal = 'Bovine'
AND WeekEndingDate BETWEEN '2010-01-04' AND '2015-01-03'
AND New_Zealand IS NOT NULL
GROUP BY DATEPART(wk, WeekEndingDate)
这是错误的,因为它给了我 52 周的时间,所有 New_Zealand 值在 Animal = Bovine 处求和,并在所有年份中对那一周求和。我每年都想要。谁能告诉我我需要改变什么?
我希望我已经说清楚了,如果我还没有说清楚,请告诉我,以便我澄清。
【问题讨论】:
-
您需要将年份添加到您的组中。如果可能的话,我会考虑对您的结构进行规范化,这样您的数据中就不会有国家作为列。看起来其他一些作品也可以正常化。
-
您还需要按年份分组
-
New_Zealand 实际上是视图中的派生列。实际数据库不包含该列,仅包含 North_Island 和 South_Island。您是否建议我有一列用于值,然后另一列将它们区分为北岛或南岛?肖恩欢迎您对数据规范化提出任何建议,因为我对所有这些都是新手?
标签: sql sql-server