flyingfz

高考时,会有一个统计:每一分,有多少人, 这种需求的 SQL 语句改怎么写

  •  
  •   flyingfz · Apr 28, 2018 · 4698 views
    This topic created in 2975 days ago, the information mentioned may be changed or developed.

    突然想到这样的一个需求,思考了一下, 一时没有思路,请教一下大家。

    1. 数据量可能会比较大
    2. 数据库 暂定 PG
    3. 有可能 把 1 分 ,改成 10 分 为一个区段。
    25 replies    2018-11-19 17:26:19 +08:00
    flyingfz
        1
    flyingfz  
    OP
       Apr 28, 2018
    貌似 用 CASE when 语句, 能解决问题。。。。
    rb6221
        2
    rb6221  
       Apr 28, 2018
    高考没那么大数据吧 各省自己统计自己的,百万都不到
    iiduce
        3
    iiduce  
       Apr 28, 2018
    开玩笑的讲,猜测事实的解决方法有可能是级级上报,这一级解决不了就让小一级的上报,最后是班主任让班长统计一下班里的,很简单啦。
    DreaMQ
        4
    DreaMQ  
       Apr 28, 2018
    先暂且假设你能得到精确到个人的数据
    SELECT count(*) FROM <table> WHERE score = ?
    对每一个分数跑一次,然后就可以做各种统计了吧
    高考全国最多也就千万量级
    vegito2002
        5
    vegito2002  
       Apr 28, 2018
    group by 分, 然后 count 什么的
    不行吗? 前提是分数保存的是整数
    Smilencer
        6
    Smilencer  
       Apr 28, 2018
    case when + group by
    ReVanTis
        7
    ReVanTis  
       Apr 28, 2018   ❤️ 1
    你们没有意识到这个问题需要生成的实际上是直方图而不是简单的 group by 分数吗。。。

    ref:
    https://stackoverflow.com/questions/1764881/getting-data-for-histogram-plot
    layorlayor
        8
    layorlayor  
       Apr 28, 2018
    窗口函数???
    Luckyray
        9
    Luckyray  
       Apr 28, 2018 via iPhone
    @iiduce 数据库都在省里……一般出分前分数段人数表就出来了
    zst
        10
    zst  
       Apr 28, 2018 via Android
    高考分一定是整数的(至少我们是)直接 group by+count 就好了吧 按河南(我记得最大的)的量级也就是不到百万 还得文理分开
    qwjhb
        11
    qwjhb  
       Apr 28, 2018
    这种?
    doubleflower
        12
    doubleflower  
       Apr 28, 2018 via Android
    循环 1 到 100 查 100 次不就行了
    pmispig
        13
    pmispig  
       Apr 28, 2018
    这种静态的没必要一条语句做到,从 0-700,生成 700 条语句执行,写入一个新表就行了
    jydeng
        14
    jydeng  
       Apr 28, 2018
    group by,然后 count 最直接了
    worldnode
        15
    worldnode  
       Apr 28, 2018
    我突然想到的是,高考要靠 sql ....
    takato
        16
    takato  
       Apr 28, 2018
    23333
    楼主是在统计 orderbook 吗?
    bomb77
        17
    bomb77  
       Apr 28, 2018
    一年全国的高考学生也就在一千万左右吧,group by 后 count 一下应该不会很慢,而且这种数据也不会变化,取一次就可以缓存起来了。。
    breadenglish
        18
    breadenglish  
       Apr 28, 2018
    不要性能的话 case when + group by,子查询搞定。要性能的话加个表,存储刻度,然后关联搞定。
    lafuerza
        19
    lafuerza  
       Apr 28, 2018
    该,最近 V2 上好多错别字
    CEBBCAT
        20
    CEBBCAT  
       Apr 28, 2018 via Android
    没听懂,官方不是提供一分一档表吗?难道形势变了?
    banbo
        21
    banbo  
       Apr 28, 2018
    windowing function
    ctsed
        22
    ctsed  
       Apr 28, 2018
    es 了解一下
    qf19910623
        23
    qf19910623  
       Apr 28, 2018
    这种数据考完了就固定了,不会变动,不需要实时查询,可以分区域统计,甚至人工统计层层上报也没什么问题
    beginor
        24
    beginor  
       Oct 22, 2018 via Android
    我来挖个坟, 使用 pg 生成序列函数,从 0 分到满分生成一个序列,再和分数表关联查询,貌似很容易吧
    reus
        25
    reus  
       Nov 19, 2018
    SELECT count(*), score / 10
    FROM scores
    GROUP BY score / 10

    不就行了……想那么复杂
    这个查询在 pg 11 下,是并行扫描的
    而且,还能建索引 CREATE INDEX ON scores USING btree((score / 10))
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2598 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 07:01 · PVG 15:01 · LAX 00:01 · JFK 03:01
    ♥ Do have faith in what you're doing.