coolzjy
V2EX  ›  问与答

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

  •  
  •   coolzjy · Mar 14, 2014 · 3182 views
    This topic created in 4486 days ago, the information mentioned may be changed or developed.
    表中储存的数据是销售数据,主要字段有“交易单价”“交易数量”“交易时间”

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

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

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

    https://gist.github.com/9561939.git
    thinkif
        6
    thinkif  
       Mar 15, 2014   ❤️ 1
    coolzjy
        7
    coolzjy  
    OP
       Mar 15, 2014
    @thinkif 生成一个时间区间的表使用 between 的条件进行连接查询,excellent idea!
    本来一直在考虑使用循环
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5630 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 02:58 · PVG 10:58 · LAX 19:58 · JFK 22:58
    ♥ Do have faith in what you're doing.