日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

by截取字段 group_深入理解 group by【思考点滴】

發(fā)布時(shí)間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 by截取字段 group_深入理解 group by【思考点滴】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

網(wǎng)上搜索 group by,結(jié)果一大堆,千篇一律

……

現(xiàn)在從淺入深的講一下 group by的應(yīng)用

1、group by的作用

group by 簡(jiǎn)單來(lái)講,就是分組,配合計(jì)算使用,計(jì)算方法如SUM、count、avg、max、min等…

應(yīng)用舉例 : 從交易表中查詢出今天有交易的商戶賬戶。

2、使用 group by 完成一個(gè)簡(jiǎn)單的應(yīng)用

查詢order_amount表中,是否有指定的賬戶 ?: 使用group by 就能做到 : select account_id from order_amount

group by account_id;

同樣distinct 也能做到 : 使用 distinct 也能做到 : select distinct account_id from

order_amount ;

如上使用 group by 和 distinct 的效率是一樣的,如果是查找是否存在,建議使用 order by + limit 1,掃描到第一條數(shù)據(jù)就完成,效率最高

select

account_id from

order_amount where

account_id =

xxx limit 1,

group by 和 distinct 使用上的差異

舉例1:select count(distinct account_id)

from order_amount ;

舉例2:select count(account_id) from order_amount

group by account_id;

感興趣的話,可以自己運(yùn)行一下。

差異:

group by : 先分組,再計(jì)算

distinct :先去重,再計(jì)算,distinct 只是去重,不太適合條件和計(jì)算類查找

復(fù)雜應(yīng)用,通過(guò)兩個(gè)條件鎖定一條記錄

舉例,獲取一批商戶,符合指定條件的最后一個(gè)訂單詳情(如:12點(diǎn)到15點(diǎn)之間,參與秒殺商戶的最后一個(gè)訂單)

方法1:

1、select * from (select * from order_amount

where xxx yyy zzz) as sel group

by xy

方法2:

2、select * from? order_amount

group by xy

having id = (select max(id) from order_amount

where xxx yyy zzz)

注 distinct 無(wú)法完成本類需求,只能靜靜的看著 group

by 表演了。

方法1分析:涉及子查詢,子查詢空間和效率的問(wèn)題都暴露出來(lái)了。

select * from (select * from order_amount

where xxx yyy zzz) as sel group

by xy

優(yōu)點(diǎn):

可以實(shí)現(xiàn)功能

缺點(diǎn):

1、group by 中的,除了算法使用的字段和group

by 以外的字段,其它字段的值是隨機(jī)的,默認(rèn)獲取的是選擇查詢索引(where或者group

by)的第一條符合分組的記錄填充的。

2、當(dāng)子查詢的結(jié)果非常大的時(shí)候,數(shù)據(jù)庫(kù)服務(wù)器的臨時(shí)表空間會(huì)用完,因此多余的查詢數(shù)據(jù)會(huì)丟失

3、子查詢生成的臨時(shí)表,沒(méi)有索引可用,如果臨時(shí)表數(shù)據(jù)很大,則主select語(yǔ)句的效率也很低

4、子查詢結(jié)果很大的時(shí)候,生成臨時(shí)表的時(shí)間也很長(zhǎng)

如果子查詢的數(shù)據(jù)超過(guò)1G【1G一般是mysql中默認(rèn)的,子查詢配置的表大小,數(shù)量差不多是500萬(wàn)條以上數(shù)據(jù)】,則后面的查詢結(jié)構(gòu)就丟失了。造成隨機(jī)性數(shù)據(jù)丟失的問(wèn)題。

所以一般數(shù)據(jù)量都不會(huì)踩到這個(gè)坑,踩到這個(gè)坑的都不是一般的數(shù)據(jù)量!

方法2分析:

select * from? order_amount

group by xy

having id = (select max(id) from order_amount

where xxx yyy zzz)

優(yōu)點(diǎn):

可以實(shí)現(xiàn)功能,合理的利用了having

語(yǔ)句,查詢結(jié)果集很小,無(wú)臨時(shí)表空間占滿的問(wèn)題

缺點(diǎn):

1、效率偏低。

方法3:

select * from order_amount

where id in (select max(id) from order_amount

where

xxx yyy

zzz

group

by

xy)

優(yōu)點(diǎn):

可以實(shí)現(xiàn)功能,查詢結(jié)果集很小,無(wú)臨時(shí)表空間占滿的問(wèn)題,效率應(yīng)該比網(wǎng)友指路要好很多

缺點(diǎn):

不能說(shuō)沒(méi)有缺點(diǎn),暫時(shí)是最好的選擇。

更復(fù)雜的需求

step 1:先定位出唯一記錄的ID或者索引信息

需求1:12點(diǎn)到15點(diǎn)之間,最后完成,且最后創(chuàng)建的訂單select max(concat(complete_time,create_time)) from order_amount where xxx yyy zzz group by xy

需求2:12點(diǎn)到15點(diǎn)之間,最后完成,且最先創(chuàng)建的訂單:select max(concat(complete_time,2000000000-create_time)) from order_amount where xxx yyy zzz group by xy

需求3:12點(diǎn)到15點(diǎn)之間,最先完成,且最后創(chuàng)建的訂單:select min(concat(complete_time,2000000000-create_time)) from order_amount where xxx yyy zzz group by xy

需求4:12點(diǎn)到15點(diǎn)之間,最先完成,且最先創(chuàng)建的訂單:select min(concat(complete_time,create_time)) from order_amount where xxx yyy zzz group by xy

step 2:通過(guò)如上唯一信息,查詢唯一數(shù)據(jù)

如上只是個(gè)舉例,總的來(lái)講,還是通過(guò) max/min(concat(xxx,yyy,bbb,...)) 等方式完成按需查找,找到符合條件的唯一記錄, 其中?xxx,yyy,bbb 可以是字段,也可以是一種運(yùn)算,如2000000000-create_time,總的原則來(lái)講,就是想通過(guò)max或者min搜索出想要的唯一信息。????????如果覺(jué)得數(shù)據(jù)量不是很大,則可以使用 select * from (select * from order_amount order

by complete_time desc,

create_time asc where

xxx yyy zzz) as sel

group by xy,zz,dd,通過(guò)內(nèi)查詢按要求排序,通過(guò)group by篩選出第一條記錄。

group by 總結(jié)

1、group by 非計(jì)算列,非group by列,如何自行控制?

解決方法:子查詢,子查詢按需進(jìn)行排序

select * from (select * from order_amount order

by complete_time desc,

create_time asc where

xxx yyy zzz) as sel

group by xy

2、group by 也是優(yōu)先使用索引。

3、group by 一次可以完成多個(gè)函數(shù),可以通過(guò)多個(gè)字段進(jìn)行分組

select count(amount) as cnt, SUM(amount)

as total_amount, avg(amount)

as avg_amount, max(id)

as max_id, min(id)

as min_id, xy, za, hs from

order_amount

group by xy,

za,hs

4、同時(shí)可以使用 with rollup再獲取上級(jí)匯總

select count(amount) as cnt,

SUM(amount) as total_amount, avg(amount)

as avg_amount,

max(id) as max_id,

min(id) as min_id, xy, za, hs from

order_amount

group by xy, za,hs with

rollup

5、group by 之后的結(jié)果也可以排序,并非select的條件,且不影響select的結(jié)果。

select count(amount) as cnt,

SUM(amount) as total_amount, avg(amount)

as avg_amount,

max(id) as max_id,

min(id) as min_id, xy, za, hs from

order_amount

group by xy asc, za desc,hs asc

6、使用 group by 的時(shí)候,難免會(huì)用到子查詢,一定要嚴(yán)格審視子查詢結(jié)果的大小和性能

總結(jié)

以上是生活随笔為你收集整理的by截取字段 group_深入理解 group by【思考点滴】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇高潮一区二区三区四区 | 人人人射 | 免费黄色在线 | 国产精品国产三级国产专区51区 | 日韩一卡 | 美女av影院 | 夜夜草av| 秘密基地电影免费版观看国语 | 黑人操亚洲女人 | 国产精品对白 | 女人扒开腿免费视频app | 中文天堂av| 久久久久婷 | 国产精品美女自拍视频 | 国产成年网站 | 精品久久人人妻人人做人人 | 美女隐私免费 | 在线97| 爱情岛黄色 | 白浆av | 亚洲一区二区三区 | 国产精品成人99一区无码 | 象人高潮调教丨vk | 欧美国产在线观看 | 一本久道久久综合无码中文 | 国产91丝袜在线播放九色 | 打屁股无遮挡网站 | 亚洲一区二区观看播放 | 欧美裸体女人 | 99精品网站| 国内精品福利视频 | 成人av无码一区二区三区 | 亚洲第一中文字幕 | 日韩激情国产 | 精品中文视频 | 性猛交xxxx乱大交孕妇印度 | 奇米影视777第四色 2019中文字幕在线免费观看 | 红桃视频一区二区三区免费 | 91看片网 | 免费国产视频 | 日本人添下边视频免费 | 天天躁日日躁狠狠躁av麻豆 | 伊人春色影院 | 免费看91视频 | 国产高潮失禁喷水爽到抽搐 | 在线xxxxx| 干干干日日日 | 国产在线播放一区二区 | 欧美精品video | 国产精品熟女一区二区不卡 | 中文在线观看av | 久久久久人妻一区精品色 | 蜜桃视频一区二区三区 | 精品乱码一区内射人妻无码 | 国产黄色三级 | 成人精品国产免费网站 | 欧美 日韩 视频 | 亚洲欧美成人一区二区 | 黄色肉肉视频 | 日本中文字幕视频在线 | 黄视频免费在线看 | 91国内精品| 日韩在线播放av | 久久九九色 | 在线观看 一区 | 女女互慰揉小黄文 | 美腿丝袜亚洲综合 | 午夜av福利 | 在线91视频| 免费看的黄色小视频 | 色哟哟视频在线 | 日本天堂影院 | 男女爱爱网站 | 国产成人精品久久 | 欧美精品欧美精品系列 | 华人av在线 | 国产一区二区三区四区五区六区 | 国产精品无码999 | 91丝袜国产在线观看 | 又大又粗弄得我出好多水 | 伊人久久综合影院 | 神马午夜激情 | 国产调教视频在线观看 | 亚洲精选一区二区三区 | 日本艳妇 | 欧美8888 | av片在线观看网站 | 蜜桃av成人永久免费 | 激情www| 亚洲一区在线视频 | 三上悠亚激情av一区二区三区 | 精品久久影视 | 黄网在线观看免费 | 大肉大捧一进一出视频 | 91丨国产丨捆绑调教 | 女人性高潮视频 | 黄片毛片在线免费观看 | 欧美黑人欧美精品刺激 | 亚洲天堂麻豆 |