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

2018-04-28 15:05:46 +08:00
 flyingfz

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

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

ref:
https://stackoverflow.com/questions/1764881/getting-data-for-histogram-plot
layorlayor
2018-04-28 16:01:37 +08:00
窗口函数???
Luckyray
2018-04-28 16:10:27 +08:00
@iiduce 数据库都在省里……一般出分前分数段人数表就出来了
zst
2018-04-28 16:14:56 +08:00
高考分一定是整数的(至少我们是)直接 group by+count 就好了吧 按河南(我记得最大的)的量级也就是不到百万 还得文理分开
qwjhb
2018-04-28 16:15:29 +08:00
这种?
doubleflower
2018-04-28 16:26:54 +08:00
循环 1 到 100 查 100 次不就行了
pmispig
2018-04-28 16:27:18 +08:00
这种静态的没必要一条语句做到,从 0-700,生成 700 条语句执行,写入一个新表就行了
jydeng
2018-04-28 16:28:47 +08:00
group by,然后 count 最直接了
worldnode
2018-04-28 16:33:17 +08:00
我突然想到的是,高考要靠 sql ....
takato
2018-04-28 16:36:15 +08:00
23333
楼主是在统计 orderbook 吗?
bomb77
2018-04-28 16:44:23 +08:00
一年全国的高考学生也就在一千万左右吧,group by 后 count 一下应该不会很慢,而且这种数据也不会变化,取一次就可以缓存起来了。。
breadenglish
2018-04-28 16:48:51 +08:00
不要性能的话 case when + group by,子查询搞定。要性能的话加个表,存储刻度,然后关联搞定。
lafuerza
2018-04-28 17:09:03 +08:00
该,最近 V2 上好多错别字
CEBBCAT
2018-04-28 17:10:13 +08:00
没听懂,官方不是提供一分一档表吗?难道形势变了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/450687

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX