當前位置:首頁 » 編程語言 » sql的演算法

sql的演算法

發布時間: 2024-07-14 02:18:07

sql累加演算法

這就是一個分析函數就搞定了的事~

select 表1.name,

sum(表2.num) over(order by 表2.year) as num

from test_1 表1, test_2 表2

where 表1.id=表2.year;


㈡ 鐢 oracle涓璓L/SQL綆楁硶 奼100鍐呯殑緔犳暟

鏈榪囩▼杈撳叆鍙傛暟inp錛岃$畻1鍒癷np涔嬮棿鐨勭礌鏁

綆楁硶錛
鎷垮嚭1-inp涔嬮棿媯琛鐨勬瘡涓鏁癷錛岀敤2鍒癷鐨勫鉤鏂規牴涔嬮棿鐨勬瘡涓鏁板幓鏁版嬁闄わ紝鍏ㄩ儴闄や笉灝界殑鍗充負緔犳暟錛屾湁涓涓鑳介櫎灝界殑涓洪潪緔犳暟姝ゆ瘯鑵

set serverout on
create or replace procere is_prime(inp number)
as
i number;
j number;
is_prim boolean;
begin
dbms_output.new_line;
dbms_output.put(to_char(2)||' ');
for i in 3..inp loop
begin
is_prim:=true;
for j in 2..trunc(sqrt(i)) loop
if mod(i,j)=0 then
begin
is_prim:=false;
exit;
end;
end if;
end loop;
if is_prim then dbms_output.put(to_char(i)||' '); end if;
end;
end loop;
dbms_output.new_line;
end;
/

exec is_prime(100)

㈢ PL/SQL取字元串子串位置的演算法。

我要說一句,連PL/SQL都不知道的也能給推薦?
請推薦的人不要只為了完成任務而推薦,為網友,為知道負點責好嗎?
如果是C#,直接split+length就可以得到結果,人家要的是PL/SQL.

PL/SQL是Oracle資料庫對SQL語句的擴展, Oracle中有Instr函數,可以找到某個字元串在某個表達式中的位置,但是只是第一次出現的位置,如果想找出所有的位置,只能寫個函數了。

下面是我寫的函數:
CREATE OR REPLACE FUNCTION GetCharNumbers (pStr IN VARCHAR2, pSplit IN VARCHAR2) RETURN VARCHAR2 IS
vTempStr VARCHAR2(200);
vReturnStr VARCHAR2(200);
vPost NUMBER;
vTotal NUMBER;
BEGIN
vPost := 0;
vTotal := 0;
vTempStr := pStr;
vReturnStr := null;
WHILE INSTR(vTempStr, pSplit) > 0 LOOP
vPost := INSTR(vTempStr, pSplit);
vTotal := vTotal + vPost;
IF vReturnStr IS NOT NULL THEN
vReturnStr := vReturnStr || ', ';
END IF;
vReturnStr := vReturnStr || TO_CHAR(vTotal);
vTempStr := SUBSTR(vTempStr,vPost+1);
END LOOP;
RETURN vReturnStr;
END;

用法 select GetCharNumbers('ljdkj1231,123,flskdf,dfjalskdfja,12e',',') from al
反回結果:
10, 14, 21, 33

㈣ sql鏁版嵁鍒嗘瀽鍩烘湰綆楁硶鏈夊摢浜涳紵

鍦⊿QL鏁版嵁鍒嗘瀽涓錛屾湁璁稿氬熀鏈綆楁硶鍙浠ョ敤浜庡勭悊鍜屽垎鏋愭暟鎹銆備互涓嬫槸涓浜涘父瑙佺殑SQL鏁版嵁鍒嗘瀽鍩烘湰綆楁硶錛
1. 鑱氬悎鍑芥暟錛氳仛鍚堝嚱鏁扮敤浜庡規暟鎹榪涜屾眹鎬誨拰緇熻°傚父瑙佺殑鑱氬悎鍑芥暟鍖呮嫭 SUM銆丆OUNT銆丄VG銆丮AX銆丮IN 絳夈

2. 鍒嗙粍涓庢帓搴忥細閫氳繃浣跨敤 GROUP BY 瀛愬彞灝嗘暟鎹鎸夌収鎸囧畾鐨勫垪榪涜屽垎緇勶紝浠ヤ究榪涜屽垎緇勭粺璁″拰鍒嗘瀽銆傚悓鏃訛紝浣跨敤 ORDER BY 瀛愬彞鍙浠ュ圭粨鏋滆繘琛屾帓搴忋

3. 榪炴帴錛氳繛鎺ワ紙JOIN錛夋槸閫氳繃鐬庤厰灝嗕袱涓鎴栧氫釜琛ㄥ熀浜庢煇縐嶆潯浠惰繘琛屽叧鑱旀潵鍚堝苟鏁版嵁銆傚父瑙佺殑榪炴帴綾誨瀷鍖呮嫭 INNER JOIN銆丩EFT JOIN銆丷IGHT JOIN銆丗ULL JOIN銆

4. 瀛愭煡璇錛氬瓙鏌ヨ㈡槸宓屽楀湪涓繪煡璇涓鐨勬煡璇㈣鍙ワ紝鍙浠ュ湪鏌ヨ涓寮曠敤鍏朵粬鏌ヨ㈢殑緇撴灉銆傚瓙鏌ヨ㈤氬父鐢ㄤ簬榪囨護鏁版嵁銆佽$畻琛嶇敓瀛楁電瓑銆

5. 紿楀彛鍑芥暟錛氱獥鍙e嚱鏁扮敤浜庡湪鏌ヨ㈢粨鏋滀腑榪涜岄拡瀵圭獥鍙o紙涓緇勮岋級鐨勮$畻鍜屽垎鏋愩傚父瑙佺殑紿楀彛鍑芥暟鍖呮嫭 RANK銆丷OW_NUMBER銆丩EAD銆丩AG 絳夈

6. 鏉′歡絳涢夛細浣跨敤 WHERE 瀛愬彞鍙浠ユ牴鎹鎸囧畾鐨勬潯浠跺規暟鎹榪涜岀瓫閫夛紝鍙閫夋嫨絎﹀悎鏉′歡鐨勬暟鎹榪涜屽垎鏋愩

7. 鑱斾緧鍜屽悎涓庨泦鍚堟搷浣滐細閫氳繃 UNION銆両NTERSECT銆丒XCEPT 絳夋搷浣滅︼紝鍙浠ュ瑰氫釜鏌ヨ㈢粨鏋滆繘琛屽悎騫躲佹眰浜ら泦銆佹眰宸闆嗙瓑鎿嶄綔銆

8. 瀛樺偍榪囩▼涓庡嚱鏁幫細瀛樺偍榪囩▼鍜屽嚱鏁版槸涓浜涢勫畾涔夌殑SQL浠g爜鍧楋紝鍙浠ラ氳繃鍙傛暟浼犻掓暟鎹騫惰繑鍥炶$畻緇撴灉銆

9. 鏁版嵁杞鎹㈠嚱鏁幫細SQL鎻愪緵浜嗕竴緋誨垪鐨勬暟鎹杞鎹㈠嚱鏁幫紝渚嬪傚瓧絎︿覆澶勭悊鍑芥暟銆佹棩鏈熷嚱鏁般佹暟鍊煎嚱鏁扮瓑錛屽彲浠ュ規暟鎹榪涚(璋堣~琛屾牸寮忚漿鎹銆佹彁鍙栧拰璁$畻銆

榪欎簺鏄涓浜涘父瑙佺殑SQL鏁版嵁鍒嗘瀽鍩烘湰綆楁硶銆傛牴鎹鍏蜂綋鐨勬暟鎹鍒嗘瀽闇奼傦紝鍙浠ョ粨鍚堜嬌鐢ㄤ互涓婄畻娉曡繘琛屾洿澶嶆潅鐨勬暟鎹鍒嗘瀽鍜屽勭悊銆

㈤ sql計算留存率演算法

select ( select count(distinct userid ) from 登錄表 where 登錄時間 = 今天 ) / ( select count(1) from 注冊表 where 注冊時間 = 昨天 ) as 戶留存率

熱點內容
壓縮量密封 發布:2024-11-26 08:52:10 瀏覽:581
java把一個list 發布:2024-11-26 08:38:38 瀏覽:585
混沌珠演算法 發布:2024-11-26 08:29:17 瀏覽:163
阿里雲解析不到伺服器 發布:2024-11-26 07:57:59 瀏覽:493
python矩陣的行數 發布:2024-11-26 07:56:25 瀏覽:355
街頭籃球手游腳本 發布:2024-11-26 07:51:18 瀏覽:752
閃迪加密器 發布:2024-11-26 07:44:08 瀏覽:553
我的世界伺服器顯示村民名字 發布:2024-11-26 07:37:16 瀏覽:479
php注冊與登錄 發布:2024-11-26 07:31:21 瀏覽:796
基金賬戶如何配置 發布:2024-11-26 07:29:58 瀏覽:181