回答

收藏

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

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

假设我有一个像这样的数据库列“ grade”:# w/ _- t* _2 S& N/ F2 Z0 J, M
|grade|% W* n4 B8 K& t1 W8 W" k8 x
|    1|# i7 M- O6 q+ F& M; y
|    2|
  T( p' _1 {# Q+ `+ j) @|    1|
6 v: k4 ?5 L1 T" L|    3|
8 X; H& h1 J" z+ e7 w! }' c|    4|
( l( v, V3 S7 c; Z; o|    5|
# E* B4 _$ `0 |1 F% ?SQL中是否有非平凡的方式来生成像这样的直方图?
2 F0 E/ Z5 C  d  ~' M: i4 F6 U' f3 w|2,1,1,1,1,0|2 ^# ?1 s9 }' J' O; b# S
其中2表示1级出现两次,1表示{2..5}级出现一次,0表示6级完全没有出现。* B' h) b" n( D" ?9 q1 L8 ~
我不介意直方图是否每计数一行。0 b5 S  W& A: O& S% T6 `* i, o' `
如果那很重要,则该数据库是由perl CGI通过unixODBC / FreeTDS访问的SQL Server。
1 l, Q6 f# Q2 F9 g/ t$ X4 M编辑: 感谢您的快速答复!只要我能确定哪个直方图值属于哪个等级,就可以不出现不存在的值(如上述示例中的6级)。
, d* S# n/ R" i' C5 ]! p                3 L0 @9 a' E+ |8 |/ Q- x% w; J* E/ r7 s
解决方案:0 |! a' w' ~  }7 g5 H
               
# ^" [) _" B# f
: z6 |3 T( Z( N3 o6 c
! x) u+ B5 f) \% ~1 ^6 h                SELECT COUNT(grade) FROM table GROUP BY grade ORDER BY grade2 w$ t, U/ U4 Z# t7 g2 r- Y. d2 V
尚未验证,但应该可以使用,但是不会显示6s等级的计数,因为它根本不在表中…
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则