利用sql語句解決簡單的數學題
今天在解決一個問題的時候,發現自己的數學水平嚴重下降,現在是光有思路沒有答案,自己簡單算了幾個答案,還是不太滿意。
最後嘗試寫了一個簡單的pl/sql就解決了。
問題是這樣的,一個系統的處理結果會提供兩個引數,用這個引數來衡量系統的情況,一個我們設為pass_ratio,另一個設為fail_ratio. 我們假設需要投入時間分別設為x,y
就是返回pass_ratio需要的時間為x,返回fail_ratio的時間為y
需要從x,y中得到一個最優組合。
如果返回的結果為pass_ratio的值,會有一個公式 pass_ratio*x-x-y>0
如果返回的結果為fail_ratio的值,會有一個公式$fail_ratio*y-y-x>0
我寫了下面的pl/sql來簡單實現,還是用窮舉法來做,在這個方面,電腦還是比人腦強大的多啊。
pass_ratio=$1
fail_ratio=$2
sqlplus -s n1/n1 <
set serveroutput on
set feedback off
begin
for x in 5..50 loop
for y in 5..50 loop
if($pass_ratio*x-x-y>0 and $fail_ratio*y-y-x>-2) then
dbms_output.put_line($pass_ratio||' '||$fail_ratio||' '||x||' '||y||' pass:'||to_number($pass_ratio*x-x-y)*0.88||'-- fail:'||to_number($fail_ratio*y-y-x)*0.88);
end if;
end loop;
end loop;
end;
/
EOF
輸出的結果如下:
> ksh a.sh 1.5 3.1
1.5 3.1 23 11 pass:.44-- fail:.088
1.5 3.1 25 12 pass:.44-- fail:.176
1.5 3.1 27 13 pass:.44-- fail:.264
1.5 3.1 29 14 pass:.44-- fail:.352
1.5 3.1 31 15 pass:.44-- fail:.44
1.5 3.1 33 16 pass:.44-- fail:.528
1.5 3.1 35 17 pass:.44-- fail:.616
1.5 3.1 37 18 pass:.44-- fail:.704
1.5 3.1 39 19 pass:.44-- fail:.792
1.5 3.1 41 20 pass:.44-- fail:.88
1.5 3.1 43 21 pass:.44-- fail:.968
1.5 3.1 44 21 pass:.88-- fail:.088
1.5 3.1 45 22 pass:.44-- fail:1.056
1.5 3.1 46 22 pass:.88-- fail:.176
1.5 3.1 47 23 pass:.44-- fail:1.144
1.5 3.1 48 23 pass:.88-- fail:.264
1.5 3.1 49 24 pass:.44-- fail:1.232
1.5 3.1 50 24 pass:.88-- fail:.352
看輸出的結果自己的大腦是算不出來的。還是寫個程式來的方便。:)
最後嘗試寫了一個簡單的pl/sql就解決了。
問題是這樣的,一個系統的處理結果會提供兩個引數,用這個引數來衡量系統的情況,一個我們設為pass_ratio,另一個設為fail_ratio. 我們假設需要投入時間分別設為x,y
就是返回pass_ratio需要的時間為x,返回fail_ratio的時間為y
需要從x,y中得到一個最優組合。
如果返回的結果為pass_ratio的值,會有一個公式 pass_ratio*x-x-y>0
如果返回的結果為fail_ratio的值,會有一個公式$fail_ratio*y-y-x>0
我寫了下面的pl/sql來簡單實現,還是用窮舉法來做,在這個方面,電腦還是比人腦強大的多啊。
pass_ratio=$1
fail_ratio=$2
sqlplus -s n1/n1 <
set feedback off
begin
for x in 5..50 loop
for y in 5..50 loop
if($pass_ratio*x-x-y>0 and $fail_ratio*y-y-x>-2) then
dbms_output.put_line($pass_ratio||' '||$fail_ratio||' '||x||' '||y||' pass:'||to_number($pass_ratio*x-x-y)*0.88||'-- fail:'||to_number($fail_ratio*y-y-x)*0.88);
end if;
end loop;
end loop;
end;
/
EOF
輸出的結果如下:
> ksh a.sh 1.5 3.1
1.5 3.1 23 11 pass:.44-- fail:.088
1.5 3.1 25 12 pass:.44-- fail:.176
1.5 3.1 27 13 pass:.44-- fail:.264
1.5 3.1 29 14 pass:.44-- fail:.352
1.5 3.1 31 15 pass:.44-- fail:.44
1.5 3.1 33 16 pass:.44-- fail:.528
1.5 3.1 35 17 pass:.44-- fail:.616
1.5 3.1 37 18 pass:.44-- fail:.704
1.5 3.1 39 19 pass:.44-- fail:.792
1.5 3.1 41 20 pass:.44-- fail:.88
1.5 3.1 43 21 pass:.44-- fail:.968
1.5 3.1 44 21 pass:.88-- fail:.088
1.5 3.1 45 22 pass:.44-- fail:1.056
1.5 3.1 46 22 pass:.88-- fail:.176
1.5 3.1 47 23 pass:.44-- fail:1.144
1.5 3.1 48 23 pass:.88-- fail:.264
1.5 3.1 49 24 pass:.44-- fail:1.232
1.5 3.1 50 24 pass:.88-- fail:.352
看輸出的結果自己的大腦是算不出來的。還是寫個程式來的方便。:)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347001/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單的SQL語句學習SQL
- MySql和簡單的sql語句MySql
- 一條簡單SQL語句的構成及語句解析SQL
- 一個使用SQL語句解決的小問題SQL
- 簡單SQL語句小結(轉)SQL
- 一條簡單的sql語句導致的系統問題SQL
- 一句簡單的SQL查詢語句的背後...SQL
- SQL Server-簡單查詢語句SQLServer
- sql語句的簡化SQL
- 利用sys schema解決一次詭異的語句hang問題
- 織夢CMS最簡單實用的SQL語句SQL
- mybatis 得sql語句對應簡單型別MyBatisSQL型別
- 簡單查詢、插入、更新、刪除SQL語句SQL
- 英語簡單句
- 資料庫介紹--認識簡單的SQL語句資料庫SQL
- 最簡單的sql語句(增刪改查統計)SQL
- SQL 語句select top 變數問題SQL變數
- 利用SQL語句完成位操作 (轉)SQL
- Oracle中SQL語句執行效率問題的查詢與解決OracleSQL
- SQL 語句學習SQL
- sql語句學習SQL
- SQL語句的分類簡介SQL
- SQL Server-簡單查詢語句,疑惑篇(三)SQLServer
- DBeaver如何快速格式化sql語句,真簡單!SQL
- PLSQL Language Referenc-PL/SQL控制語句-條件選擇語句-簡單CASESQL
- sql宣告變數,及if -else語句、while語句的用法SQL變數While
- 利用pl/sql執行本地的sql檔案中的sql語句SQL
- 一條簡單的sql語句執行15天的原因分析SQL
- mysql 常用sql語句 簡介MySql
- MySQL的簡單查詢語句MySql
- jivejdon sql語句問題SQL
- 一條簡單的SQL語句優化-新年新氣象SQL優化
- Oracle SQL精妙SQL語句講解OracleSQL
- sql的聯結語句詳解SQL
- 用簡單的方法解決問題
- 簡單使用oracle的審計語句Oracle
- Android中運算元據庫SQL語句的講解,簡單的查詢修改等操作學生類的例子講解AndroidSQL
- 對sql語句的優化問題SQL優化