假设我有一个像这样的数据库列“ 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等级的计数,因为它根本不在表中…