flyingfz

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

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

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