1

次のようなデータベーステーブルがあります。

wagetable
 name     lowhours  highhours  wage 
 Default  0         40         10   
 Default  40        9999       15   
 Brian    0         40         15   
 Brian    40        50         20   
 Brian    50        9999       22   
 Chad     0         40         13   
 Chad     40        9999       17 

「ブライアン」が 43.5151587 時間働いた場合、彼が (40*15)+(3.5151587*20) = 670.303174 を作ったことを理解してもらいたいのです。

これは SQLite データベースなので、以下を使用することがわかっています。

SELECT wage FROM wagetable WHERE name LIKE 'Brian' AND 'HourNum' BETWEEN lowhours AND highhours;

床と%の組み合わせで...私は頭の中で論理をまとめていません。

ロジックを必要なものに変換できるため、C#とPHPでの回答が受け入れられていることに注意してください。疑似コードを探していますが、引き出された回答を受け入れます

編集:注意してください...勤務時間は正確な整数になることはありません。重複を発生させた理由です。

編集2:

従業員の総労働時間 (例: 43.5151587) を取得したいのですが、最初の 40 時間は、彼が時給 15 ドルで標準賃金を支払っていたことに気付きます。つまり (40*15)...その後、彼は 3.5151587 時間の残業を 1 時間あたり 20 ドルで行いました。したがって、(40*15) に (3.5151587*20) を加算すると、獲得した合計金額は 670.303174 でした

4

1 に答える 1

0

あなたの投稿から収集したものから(疑似コード):

foreach pay_bracket p:
    if hours > p.length
        pay += p.length * p.pay
        hours -= p.length
    else
        pay += hours * p.pay
        end

どこですかlength- highhours(lowhoursもちろん、支払いブラケットは隣同士にあります)。

于 2010-08-16T10:11:04.100 に答える