鍍金池/ 問答/人工智能  Java  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全/ MySql如何自定義函數(shù) 里面可以對(duì)Group By中每一組所屬的原始數(shù)據(jù)進(jìn)行操

MySql如何自定義函數(shù) 里面可以對(duì)Group By中每一組所屬的原始數(shù)據(jù)進(jìn)行操作?

假設(shè)原數(shù)據(jù)
id type time
1 1 201X-XX-XX XX:XX
2 1 201X-XX-XX XX:XX
3 1 201X-XX-XX XX:XX
4 2 201X-XX-XX XX:XX
5 2 201X-XX-XX XX:XX

查詢語句
Select t.type,t.time,MAX(t.id),t.*
FROM t
WHERE t.time between '2018-08-01 00:00:00' AND '2018-08-03 00:00:00'
GROUP BY t.type

查詢后的結(jié)果類似
type max(id) time
1 3 201X-XX-XX XX:XX
2 5 201X-XX-XX XX:XX
.......

現(xiàn)在有個(gè)需要,增加一個(gè)startTime和endTime,這個(gè)time在'2018-08-02 06:00:00' AND '2018-08-02 10:00:00' 范圍內(nèi)的最小的時(shí)間是startTime,最大時(shí)間是endTime

Select后的列都是GROUP BY 后的數(shù)據(jù),因此我現(xiàn)在想要:自定義一個(gè)函數(shù),例如 funMin(time,startTime,endTime)和funMax(time,startTime,endTime) ,在里面對(duì)每個(gè)type組中的所有數(shù)據(jù)進(jìn)行遍歷和判定,最后返回最小時(shí)間和最大時(shí)間,請(qǐng)問該怎么做?

(就類似MAX函數(shù)這樣,MAX(id)返回的值,是從所有同一個(gè)type的組中取得出來的)

回答
編輯回答
背叛者

使用了一個(gè)比較笨的方法,就先與時(shí)間拼接成一個(gè)字符串 Concat(time,列) as newColumn ,然后MAX取得最大值,接著在使用sub取時(shí)間后的內(nèi)容

2018年8月10日 10:34