回答

收藏

根据数据库中的列值生成直方图

技术问答 技术问答 393 人阅读 | 0 人回复 | 2023-09-14

假设我有一个像这样的数据库列“ grade”:
3 K7 A/ n- Z2 F# L, }|grade|* }! B1 |+ T: j+ L7 `
|    1|; Q' d3 p7 L1 b
|    2|
+ B% q: r0 k! ^3 `- ^: J8 X|    1|, r0 `4 u4 d" w& ?# s' Y; `# z
|    3|
( u' |/ C0 f' Q8 s7 S( g7 p) t|    4|' }2 H3 [# ~/ G( T5 \8 q
|    5|. s8 X( _! \/ d
SQL中是否有非平凡的方式来生成像这样的直方图?
- {3 \& L* |( \  x|2,1,1,1,1,0|. s7 D: i9 s0 g9 n
其中2表示1级出现两次,1表示{2..5}级出现一次,0表示6级完全没有出现。. X. s5 P1 I: `6 }
我不介意直方图是否每计数一行。' r1 ~9 h2 l# \& ~, m& @% d, w4 b, [
如果那很重要,则该数据库是由perl CGI通过unixODBC / FreeTDS访问的SQL Server。5 Y6 r; k: z$ a, t" @) y
编辑: 感谢您的快速答复!只要我能确定哪个直方图值属于哪个等级,就可以不出现不存在的值(如上述示例中的6级)。
4 D9 i% |  ]5 U+ ]* L2 Z( m' `                0 S; \- l2 o% M7 Q0 A
解决方案:0 t; N( N" {8 O$ W1 M( a
               
3 F% \6 p: i0 q3 Q3 Z& d2 U* G9 U
) [: v- O: l6 h! e, }* x4 [  z+ K$ a/ w4 t; i8 t. O! a
                SELECT COUNT(grade) FROM table GROUP BY grade ORDER BY grade
. N6 Z& W; f# E# A) |尚未验证,但应该可以使用,但是不会显示6s等级的计数,因为它根本不在表中…
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则