web-dev-qa-db-ja.com

SQLに関するプログラマーの知識をテストするための質問は何ですか?

SQLに関するプログラマーの知識をテストするための質問は何ですか?質問に対する答えは何ですか?そして、質問に関連する概念を理解する可能性が高い時間に関して、正解の欠如は何を意味するでしょうか?

GOOGLED: SQLチャレンジ

14
blunders

それはあなたがそれをどれほど難しくしたいかに依存します。また、ほとんどのSQLの問題には許容できる複数の方法があり、SQLの問題をずさんな方法で解決して他の問題を引き起こす方法もあるので、私はあなたに答えを与えるのに少し警戒しています。答えを「採点」する人は、間違いなく自分で解決できる必要があります。

とは言っても、頭から浮かんだものをいくつか挙げておきます。

非常に簡単なレベル:
EmpID、FirstName、Lastname、HireDate、およびTerminationDate列を持つ従業員テーブルがあるとします。
「Smith」で始まる姓が姓、名の順にソートされている、会社でまだ働いているすべての従業員を返すクエリを記述します。

簡単レベル
上記のEmployeeテーブルに加えて、列EmpIDとReviewDateを持つ新しいテーブル "AnnualReviews"があるとします。
HireDateでソートされたレビューがなかったすべての従業員を返すクエリを記述します。

Medium Level上記の従業員テーブルを前提として、会社で働いている在職期間が最も多い従業員と最も少ない従業員との差(日数)を計算するクエリを記述しますか?

ハードレベル
上記の従業員テーブルを考慮して、誰かを雇ったり解雇したりせずに会社が経過した最長の期間(日数)を計算するクエリを記述します。

ハードレベル
同じテーブルを再度使用して、各従業員を返すクエリを記述します。各行/従業員には、在職期間中いつでも会社で働いた最大数の従業員と、最大数に達した最初の日付が含まれます。カーソルを使用しないための追加ポイント。

20
JohnFx

私は通常、データスペシャリストの面接にしか座らないので、私の質問は難しい傾向があります。しかし、SQLを作成する人に必要なのは、結合についての知識と、左結合と内部結合のどちらを使用するかです。それを理解していない人は、形や形を問わずデータベースにクエリを実行するビジネスがありません。

私がやろうとしているもう1つのことは、GROUP BYを実行し、集計関数を使用する方法を彼らが理解していることを確認することです。

そして、UNIONとUNION ALLの違いは、私の仕事で多くの貧しい候補者を排除しました。

4
HLGEM

私はデータベースプログラマーのための技術テストの開発に携わっていました。質問は、私が非常に基本的に考えるものでした。特定のテーブル構造に対してCREATE TABLEステートメントを記述します。いくつかの簡単なクエリを実行します。等.

SQLで自分たちを専門家と呼んだほとんどの求職者は、テストを失敗させました。彼は長年SQL開発者でしたが、GUIがCREATE TABLEステートメントを作成したので、CREATE TABLEステートメントを作成したことはないと語っています。

他の技術テストでも同様の経験があります。 Windowsサポートスタッフの場合、タスクは「ドメインユーザーの作成」、「プリンターの追加」、「ファイルのアクセス許可の変更」に似ています。ほとんどの人は、特にプレッシャーのもとで、これらのタスクを実行できません。簡単なことさえできれば、おそらくかなり能力があると思います。

2
Barry Brown

私は質問します"SQLクエリで使用されるユーザーからの入力値をサニタイズする理由と方法を教えてください。"

これはSQLインジェクションを防ぐために必要であり、これに回答するには、SQL構文とコマンド(SELECTUPDATEDROPDELETEなど)。SQLコメントを使用してクエリを中断し、悪意のあるユーザーが何をしたいかを注入することで、これらをどのように回避できるかについても説明します。

2
gablin

よりオープンな質問をしたい場合:DATE、DATETIME ...データ型に関する一般的な質問をします。異なるベンダーの実装/製品間の違いについて尋ねます。コマンドラインツール、バルクローダー、プリティプリンターについて話します。インタビュー中に新しいトリックを学ぶことができるでしょう。

0
knb