不用下跪,我來挽救你。
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),天津網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:天津等地區(qū)。天津做網(wǎng)站價(jià)格咨詢:18980820575
select trunc((rownum - 1)/10)+1 as groups,max(field1),min(field1),avg(field1) from y61 group by trunc((rownum - 1)/10)+1 order by groups;
以NO字段為主,進(jìn)行分組。
select a.no,sum(a.金額) from table a group by a.no
同一個(gè)NO,會對應(yīng)不同的姓名。
select a.no,a.姓名,sum(a.金額) from table a group by a.no,a.姓名
看不懂
目標(biāo)語句:當(dāng)收費(fèi)醒目包含‘鹽’這一項(xiàng),則統(tǒng)計(jì)no='10' 且 姓名=‘張三’,所有收費(fèi)項(xiàng)目對...
select a.項(xiàng)目,sum(a.金額) from table a where a.收費(fèi)項(xiàng)目= '1' and a.no = '10' and a.姓名=‘張三’ group by a.項(xiàng)目
按照你的說法,我的理解的如果不放group by那么可能出現(xiàn)兩行完全重復(fù)的數(shù)據(jù),是這個(gè)意思吧。
不能放day,因?yàn)閐ay是在這個(gè)sql中起的一個(gè)別名,只有在查詢完成后day才有效果(比如在having中們就可以用),但是在group by中查詢并沒有完成,所以day沒有用。
這個(gè)有一個(gè)辦法,就是你把day前面的那一串(也就是別名day表示的那串round函數(shù)中的內(nèi)容)整個(gè)放在groupby的后面。
還有一個(gè)辦法不一定好用(這個(gè)方法有個(gè)前提,就是每個(gè)分組的最后day結(jié)果只有一個(gè),而不是可能有好幾個(gè)),你可以在round前面加一個(gè)max或者min,這樣就是聚合函數(shù)了(也就是說不需要在groupby后面加day的那一串了),如果完全相同,那么可能只顯示一個(gè)(可能,我忘了如果存在相等的最大值時(shí),是怎么樣的一個(gè)結(jié)果了,你可以試試),這樣就不需要大改動,就能完成了、
常用的函數(shù)有:
1、COUNT ()返回查尋的行數(shù)
例如:select count(*) from table;
2、MAX() 返回表達(dá)式的最大值
例如:select a, max(b) from table group by a;
3、MIN() 返回表達(dá)式的最小值
例如:select a, min(b) from table group by a;
4、SUM() 返回表達(dá)式的總合
例如:select a, sum(b) from table group by a;
5、AVG() 返回表達(dá)式的平均值
例如:select a, avg(b) from table group by a。
函數(shù)
函數(shù)在數(shù)學(xué)上的定義:給定一個(gè)非空的數(shù)集A,對A施加對應(yīng)法則f,記作f(A),得到另一數(shù)集B,也就是B=f(A).那么這個(gè)關(guān)系式就叫函數(shù)關(guān)系式,簡稱函數(shù)。
首先按照2列進(jìn)行排序,相同的作為一組,比如:
按性別和所在系分組后:
CREATE??TABLE??info?(
users????varchar(100)
);
INSERT?INTO?info?VALUES('userA@userB@userC');
INSERT?INTO?info?VALUES('userB@userC@userD');
INSERT?INTO?info?VALUES('userC@userD@userE');
COLUMN?"用戶"?FORMAT?A15
SELECT
to_char(strvalue)?as?"用戶",
count(*)?AS?"用戶數(shù)"
FROM
info,
table(fn_split(?info.users,??'@'))
GROUP?BY
to_char(strvalue)
ORDER?BY
1;
用戶????????????????用戶數(shù)
---------------?----------
userA????????????????????1
userB????????????????????2
userC????????????????????3
userD????????????????????2
userE????????????????????1
上面這樣的效果, 是否滿足你的需求?
如果滿足的話, 你再往下看, 下面是 存儲過程的相關(guān)代碼
Oracle?需要首先在數(shù)據(jù)庫中,?創(chuàng)建好?類型?與?函數(shù)。
來實(shí)現(xiàn)一個(gè)??split?功能的處理。
--?定義一個(gè)對象類型.
CREATE?OR?REPLACE?TYPE?ty_row_str_split?as?object?(strValue?VARCHAR2?(4000));
/
--?定義一個(gè)?表/數(shù)組類型,?內(nèi)容是前面定義的那個(gè)對象.
CREATE?OR?REPLACE?TYPE?ty_tbl_str_split?IS?TABLE?OF?ty_row_str_split;
/
--------------------
--?字符分割函數(shù).
--?參數(shù)1:??被分割的源字符串
--?參數(shù)2:??用于拆分的字符串。
--------------------
CREATE?OR?REPLACE?FUNCTION?fn_split(
p_str???????IN?VARCHAR2,
p_delimiter?IN?VARCHAR2)
RETURN?ty_tbl_str_split?IS
j?????????INT?:=?0;
i?????????INT?:=?1;
--?被分割的源字符串?的長度.
len???????INT?:=?0;
--?分隔字符串的長度
len1??????INT?:=?0;
--?暫存的中間每一個(gè)單元的文本信息.
str???????VARCHAR2(4000);
--?預(yù)期返回結(jié)果.
str_split?ty_tbl_str_split?:=?ty_tbl_str_split();
BEGIN
--?被分割的源字符串?的長度.
len???:=?LENGTH(p_str);
--?分隔字符串的長度.
len1?:=?LENGTH(p_delimiter);
--?遍歷?被分割的源字符串.
WHILE?j??len?LOOP
--?在被分割的源字符串中,?查詢?分隔字符串.
j?:=?INSTR(p_str,?p_delimiter,?i);
IF?j?=?0?THEN
--?j=0?意味著沒有找到.
??--?可以理解為是查詢到最后一個(gè)單元了.
??--?設(shè)置?j?:=?len,?讓外部的循環(huán)處理可以結(jié)束了.
j??:=?len;
--?獲取最后一個(gè)單元的內(nèi)容.
str?:=?SUBSTR(p_str,?i);
--?結(jié)果追加一行.
str_split.EXTEND;
--?設(shè)置結(jié)果內(nèi)容.
str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);
IF?i?=?len?THEN
EXIT;
END?IF;
ELSE
--?如果在被分割的源字符串中,找到了?分隔字符串.
--?首先,獲取分割的內(nèi)容.
str?:=?SUBSTR(p_str,?i,?j?-?i);
--?然后設(shè)置索引,?下一次再查找的時(shí)候,從指定的索引位置開始(不是從0開始找了)
i?:=?j?+?len1;
--?結(jié)果追加一行.
str_split.EXTEND;
--?設(shè)置結(jié)果內(nèi)容.
str_split(str_split.COUNT)?:=?ty_row_str_split(strValue?=?str);
END?IF;
END?LOOP;
RETURN?str_split;
END?fn_split;
/
函數(shù)創(chuàng)建完畢以后,可以開始做查詢的處理.
SQL?select?to_char(strvalue)?as?Value?from?table(fn_split('aa,bb,cc',','));
VALUE
-------------------------------------------------------------------------------
aa
bb
cc
網(wǎng)頁名稱:oracle分組怎么處理,oracle里面的分組取最新怎么寫
分享鏈接:http://m.rwnh.cn/article20/phjgjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、網(wǎng)站收錄、商城網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)