2016-04-01 3 views
0

私の質問は、下に強調表示された太字の質問に対してSQLクエリーを正しく書く方法です。SQLの知識を毎日の職場活動に適用する

医師の作業 hours.Tableは、 「姓」、「氏名」、「日付」「HoursWorkedを」フィールドを次している格納HMOデータベース内のテーブルがあります。ジョイ・ドウという名前の医師 の1月〜3月の平均労働時間を取得するSQL文 を作成します。これは宿題の質問のように聞こえるよう

は、これまでのところ、私は

SELECT HoursWorked 
FROM Table 
WHERE DATE = (January - March) AND 
SELECT AVG(HoursWorked) FROM Table WHERE FirstName="Joe",LastName="Doe"* 
+0

確かに私は正しくは得られませんでしたが、その特定の従業員の特定の日付グループ(1月から3月)から平均HoursWorkedを見つけることができるのは不思議でした。ジョー・ドゥーのケースでは、私は彼が日付1月までのすべての行進の間に働いた平均時間を見つけたかった)計算のための構文は私が把握できないものです。 – Chie

答えて

1

いくつかのポインタを持っている(私たちはここであなたのために答えていませんが、我々はあなたにいくつかのガイダンスを与えることを試みることができます)。

あなたが選択したものから戻ってきたいものをすべて入れ、最後にすべての検索条件を設定したいとします。

ので、一般的な形式は次のようになります。

SELECT Column1, 
     Column2, 
     Column3, 
    FROM YourTable 
    WHERE Column4 = Restriction1 
     AND Column5 = Restriction2 

あなたが考える必要がある次の事は、日付がデータベーステーブルでフォーマットされている方法です。うまくいけば、それらは日付/時刻の型の列に保持されます(オプションは使用しているデータベースエンジン(Microsoft SQL Server、Oracle、MySqlなど)によって異なります)。実際には、人々が使用している古いデータベースの中には、あらゆる種類の形式で日付を格納することができるため、これはずっと難しくなりますが、私はそれが宿題型の質問であると仮定しているため、

日付が2012年3月2日に真夜中過ぎたすべての行を望んでいた場合、あなたはWHERE句だろうので、あなたは、値に列を比較することによって、制限を指定しますとすることを

WHERE MyDateColumn >= '2012-03-02 00:00:00' 

注意を混乱を避けるために、通常、「年 - 月 - 日時:分:秒」のように日付をフォーマットしようとします。これは、異なる国では日付が異なる形式で書かれていることが多く、これはユニバーサル形式とみなされ、少なくともコンピュータごとに理解されているからです。

WHEREの中で、ある特定の日付の後の日付と、別の特定の時刻の前の日付の比較の2つを組み合わせたいとします。

これを行ってどこに行くのかを確認したら、進捗状況をあなたの質問に更新してください。問題があれば誰かが完了するのを手伝うことができます。http://sqlfiddle.com/

あなたはすでに答えが

SELECT AVG(HoursWorked) FROM Table WHERE FirstName="Joe",LastName="Doe"* 

書かれている

0

はあなただけ修正する必要があります:あなたは、実際のデータベースへのアクセス権を持っていると構文を使って実験する必要がない場合は

、このサイトを試してみてくださいクエリ

SELECT AVG(HoursWorked) as AVGWORKED FROM Table WHERE FirstName='Joe' AND LastName='Doe' 

は、そのクエリがあれば、しかし、あなただけが、次を追加するいくつかの時間の間で取得する必要があり、平均時間は、ジョーDoeのために働いたあなたを与える「AND」になりますSQLサーバーを使用して、DateFromParts(年、月、日)の組み込み関数を使用して新しいDateを作成したり、別のデータベースエンジンを使用している場合は、文字列をDateColumn Convert(Date、 'MM/dd/YYYY ')の例で

SELECT AVG(HoursWorked) as AVGWORKED FROM Table WHERE FirstName='Joe' AND LastName='Doe' AND DateColumn between DateFromParts(year,month,day) and Convert(Date,'MM/dd/yyyy') 

iがアプローチ(初期日付datefromparts、及び(日付変換)終了日など)の両方を示しました。

関連する問題