回答

收藏

GROUP BY与MAX(DATE)[重复]

技术问答 技术问答 52 人阅读 | 0 人回复 | 2023-09-13

这个问题已经在这里有了答案
% ]$ c; R$ F2 v. O; r+ Z. l$ G提取具有列最大值的行 (35个答案)* n' G9 u$ x' p9 t$ W
3年前关闭。
% V( A& A- C, @5 x我正在尝试在表格中列出每列火车的最新目的地(最大出发时间),例如:
3 k& s5 d6 [: s. z! tTrain    Dest      Time
3 A" m* J4 j% R1        HK        10:00
" w, @6 o8 l$ z6 Z& c1        SH        12:00
- J3 K/ v  \- U( G  r1        SZ        14:00
' }' D  i. @0 E% w2 p- X2        HK        13:00
0 A* u& K6 K3 g6 ~# l3 h2        SH        09:00/ L( w9 i. ], ], g( A" E
2        SZ        07:00+ ?5 X4 p' q: T1 w. G7 q! ~* X# n8 s4 @) I
理想的结果应该是:$ A/ s8 b2 a- S# t" p1 g
Train    Dest      Time" g1 s) @% M8 ~$ a2 k9 V1 G6 H1 P$ W* ]- M
1        SZ        14:00" k2 B/ v2 K- v$ ]. k
2        HK        13:00& p( G6 \* t3 L  E( Y9 ]. u
我尝试使用" ]4 Z, l) Q& R- t! S7 c7 T) x) y0 B
SELECT Train, Dest, MAX(Time), y; G, S1 ?7 S& B% f: W
FROM TrainTable% R$ o- }" A: E
GROUP BY Train
6 G+ H) H) p4 ]7 y我收到一个“ ora-00979不是GROUP BY表达式”错误,提示我必须在我的group by语句中包含“目标”。但这肯定不是我想要的…/ h3 v' @' L5 R6 |# O/ S0 T) M* |
是否可以在一行SQL中完成?
' n4 K7 i) @% m: U( ]- P               
/ P4 I# D% V* _% _. L2 \# ]0 }解决方案:9 H" v3 ^9 j6 p; ^/ P9 D  f
               
  e( \4 o* j- B1 x  c. {2 S* Z3 r# C0 {4 w$ u- I- A+ Y/ e& @. p
; i0 W6 H( k4 _8 S+ x
                您不能在结果集中包括未分组的未聚合列。如果火车只有一个目的地,则只需将“目的地”列添加到group by子句中,否则您需要重新考虑您的查询。7 C- s) _, _/ \& J2 K
尝试:2 m* V0 m, M& j
SELECT t.Train, t.Dest, r.MaxTime, z5 P$ A2 f% ~
FROM (
( B) B2 L* \5 `+ H$ M      SELECT Train, MAX(Time) as MaxTime
$ l- \1 o9 P9 K6 t      FROM TrainTable' Q4 l, D9 t/ m9 c
      GROUP BY Train" }; }! r+ J- n' T
) r/ }6 E$ H& p' m; t
INNER JOIN TrainTable t! T0 }: k- C, a; h+ r5 j* A$ Y
ON t.Train = r.Train AND t.Time = r.MaxTime
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则