SQL从宿舍中检索数据

时间:2015-07-23 20:51:24

标签: sql sql-server

我是SQL的新手。我正在练习并且来了。我将如何分别检索第一季度,第二季度,第三季度和第四季度的总销售数量。我知道我没有提供任何工作,我只想了解可用于实现它的逻辑和功能。

3 个答案:

答案 0 :(得分:1)

您可以使用SUM()为您提供美元销售额的总计,以及总销售额的COUNT(*)。至于进一步细分(例如按季度),您需要提供有关数据结构的更多信息。

答案 1 :(得分:1)

您没有指定您正在使用的RDBMS,也没有指定任何表结构,因此我只能提供一些一般性建议。

首先,您需要获得表格中每条记录的年份和季度。据我所知,每个RDBMS都有可以帮助您提取日期和月份的函数。假设一个名为dt的列保存日期,您可以执行以下操作:

select year(dt) as y, month(dt) as month, sales
from your_table

这只是解决方案的一部分。你需要得到季度;再据我所知,有些功能可以帮到你。在MS Access中,您有Iif(),而在其他RDBMS(如MySQL)中,您可能有IF()和/或CASE ... END,因此您可以通过以下方式获得所需内容:

select year(dt) as y
     , (case 
             when month(dt) <= 3 then 1
             when month(dt) <= 6 then 2
             when month(dt) <= 9 then 3
             else 4
       end) as q
     , sales
from your_table

(作为练习,使用If()执行相同的操作。)

最后,您可以使用GROUP BY和相应的聚合函数聚合数据:

select year(dt) as y
     , (case 
             when month(dt) <= 3 then 1
             when month(dt) <= 6 then 2
             when month(dt) <= 9 then 3
             else 4
       end) as q
     , sum(sales) as sum_sales
     , count(sales) as count_sales
from your_table
group by y, q

答案 2 :(得分:0)

你应该可以使用这样的东西来简化。 DATEPART()函数可以在Microsoft的网站here.

上找到
SELECT SUM(Sales) AS Quarter1Sales
FROM YourTable
WHERE DATEPART(qq, DateSold) = 1 

注意:您将每季度更改1到2,然后是3,然后是4。同时将销售额更改为正确的列名称,将YourTable更改为表名。