V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolzjy
V2EX  ›  问与答

请问使用 SQL 能否实现以下要求?

  •  
  •   coolzjy · 2014-03-14 22:15:14 +08:00 · 2689 次点击
    这是一个创建于 3716 天前的主题,其中的信息可能已经有所发展或是发生改变。
    表中储存的数据是销售数据,主要字段有“交易单价”“交易数量”“交易时间”

    需要按照下面的要求提取数据:
    1、按照交易时间3分钟的间隔进行分组,求每组的成交额和成交量
    2、按照交易时间等分为30组(每组时间跨度相等),求每组的成交额和成交量
    3、将每天的交易量等分为30组,求每组的成交额和成交量

    三个要求的主要难点在于分组。需要注意的是,每天的交易是集中在某个时段进行,而不是分布在全天,所以第二条要求不能通过人工划分时间间隔来实现,需要根据当天的第一条数据的时间和最后一条数据的时间动态划分。

    SQL中如何实现上述要求呢?
    第 1 条附言  ·  2014-03-15 09:28:05 +08:00
    用SQL Server数据库
    7 条回复    1970-01-01 08:00:00 +08:00
    zzNucker
        1
    zzNucker  
       2014-03-14 23:28:43 +08:00   ❤️ 2
    太麻烦了,不适合用SQL解决。
    Narcissu5
        2
    Narcissu5  
       2014-03-14 23:39:53 +08:00   ❤️ 1
    同学你起码要说明哪种数据库吧,Sql Server和Oracle应该是可以的,大不了写存储过程嘛
    thinkif
        3
    thinkif  
       2014-03-15 09:10:22 +08:00   ❤️ 1
    SQL能实现, 只不过不同的数据库具体写法不一样
    coolzjy
        4
    coolzjy  
    OP
       2014-03-15 09:30:32 +08:00
    @zzNucker 我也是这么考虑,有没有更合适的软件推荐
    @Narcissu5
    @thinkif
    数据库是SQL Server 第三条有点头绪,可以取总条数然后等分,时间间隔的怎么取求指导
    thinkif
        5
    thinkif  
       2014-03-15 12:46:52 +08:00   ❤️ 2
    @coolzjy
    中午写了个小例子, 为了构造数据方便, 用的是我们公司今天的考勤数据库中的信息
    根据签到时间将七百多人的签到记录动态分成30个时间段, 统计每段的签到人数, 类似你要求的成交量, 至于成交额就是换个聚合函数的事儿, 省略了...

    https://gist.github.com/9561939.git
    thinkif
        6
    thinkif  
       2014-03-15 12:53:16 +08:00   ❤️ 1
    coolzjy
        7
    coolzjy  
    OP
       2014-03-15 13:51:27 +08:00
    @thinkif 生成一个时间区间的表使用 between 的条件进行连接查询,excellent idea!
    本来一直在考虑使用循环
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1087 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:22 · PVG 06:22 · LAX 15:22 · JFK 18:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.