高考时,会有一个统计:每一分,有多少人, 这种需求的 SQL 语句改怎么写 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flyingfz

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

  •  
  •   flyingfz 2018 年 4 月 28 日 4571 次点击
    这是一个创建于 2918 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    不就行了……想那么复杂
    这个查询在 pg 11 下,是并行扫描的
    而且,还能建索引 CREATE INDEX ON scores USING btree((score / 10))
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4828 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 90ms UTC 09:41 PVG 17:41 LAX 02:41 JFK 05:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86