SQL sorgusuyla röportaj


19

Bir tablo verildi 'çalışanlar'

 employee_id | salary | department_id 
-------------+--------+---------------

Sadece SQL kullanarak bir departmandan diğerine çalışan transferlerinin tüm çeşitlerini bulur, böylece hem 'kalkış' hem de 'varış' departmanındaki ortalama maaş artmıştır.

PS: Bana hiç cevap vermeyen bir röportajda soru soruldu ve Google çok az yardımcı oldu.


5
Umarım bekledikleri cevap "Neden küçük harfli tablo ve sütun adları ve neden deve kasaları yerine alt çizgi" idi
Mikey Mouse

@MikeyMouse: neden olmasın? Deve örneği, SQL'de tablo adları yazmanın tercih edilen yoludur (en azından nereden geldiğim)
a_horse_with_no_name

Yanıtlar:


22

Dolayısıyla, mevcut bölümlerinde ortalamanın altında, ancak yeni bölümlerinde ortalamanın üzerinde kazanç elde eden Çalışanları arıyorsunuz.

Bunu karşılayacak tüm çalışan transferlerini almanın olası bir yolu

WITH departments
     AS (SELECT AVG(salary) AS AvgSalary,
                department_id
         FROM   employees
         GROUP  BY department_id)
SELECT e.employee_id,
       dept_current.department_id AS current_department_id,
       dept_new.department_id     AS new_department_id
FROM   employees e
       JOIN departments dept_current
         ON e.department_id = dept_current.department_id
            AND dept_current.AvgSalary > e.salary
       JOIN departments dept_new
         ON dept_new.AvgSalary < e.salary 

Hangi bölümün "yeni" hangisinin "eski" olduğunu nasıl anlarsınız?
mustaccio

1
@mustaccio - Şu anda bulundukları departman tabloda employees. Bu, durumu (varsa) aktarabilecekleri tüm departmanları bulur.
Martin Smith

10

Bunun bir röportaj sorusu ( test sorusu değil ) olduğu göz önüne alındığında , bağlama bağlı olarak birkaç olasılık vardır.

Soru belirtildiği gibi eksik ve olumsuzbelki şu anki haliyle cevaplanmamalıdır ( lütfen aşağıdaki GÜNCELLEME bölümüne bakın ). Ne eksik? Örneğin:

  • Soru geçmiş transferler veya gelecekteki potansiyel transferler hakkında mı soruyor? İfadede belirsizlik vardır.
  • Bu tabloda başka alanlar var mı, yoksa hepsi mi? Eğer öyleyse, bunlar ne?
  • Bu tabloda tanımlanmış herhangi bir kısıtlama veya dizin var mı? Şemanın geri kalanı nerede?
  • Bu bir OLTP sistemi veya OLAP mı?

Bu daha çok bir OLTP tablosuysa, employee_idalanda tanımlanmış bir PK / Benzersiz Dizin / Benzersiz kısıtlama olmalıdır . Ve bu durumda, başına sadece bir giriş olur employee_idve bu nedenle transferleri belirlemenin bir yolu olmaz (yani "eski" department_idkayıt yoktur).

Bu bir OLAP tablosundan daha fazlası ise, bu Yavaş Yavaş Değişen bir Boyut olabilir, bu durumda birden fazla employee_idkayıt olabilir. Ama aynı zamanda orada gerekir ValidFromve ValidToböylece TARİH / DATETIME alanları kalkış ve varış bölümlerinde uygun bir yerinde belirlenebilir. Bu alanlar olmadan hangi bölümün kalkış ve hangisinin varış olduğunu belirlemenin bir yolu yoktur . Ve bu ayrımın, isteğin tersi olan kayıtların geri alınmasına izin vereceğini bilmemek.

Dolayısıyla, bu sorunun nasıl yorumlanacağı konusundaki "bağlam", sorunun neden böyle ifade edildiğinin sebebidir.

  • Röportaj ile burada soru sormak arasında bazı detayları unuttunuz:

    Bu olur, ancak bu durumda, eksik bilgileri doldurmak için soruyu güncellemeniz gerekir veya cevapsız kalır (en azından anlamlı bir cevap almak açısından).

  • Sorusu doğru burada transkripsiyonu edilmiş ve bu sorunlar vardı değil bilinen veya Görüşmeci (s) tarafından tasarlanan:

    Bu durumda, bu sorunların farkındaysanız ve bir cevap bekliyorduysanız, bunu olası bir işveren ;-) olarak ayıklama aracı olarak kullanabilirsiniz.

  • Sorusu doğru burada transkripsiyonu edilmiş ve bu sorunlar vardı bildiği veya Görüşmeci (s) tarafından tasarlanan:

    Bu durumda, muhtemelen bunu ham teknik yeteneklerden daha fazlasına bakarak insanları ayıklamanın bir aracı olarak kullanıyorlardı. Çoğu son kullanıcı ve ürün sahibi, vb. Düşük seviyeli teknik detaylarda düşünmüyor / konuşmuyor ve genellikle gerekli parçaları dışarıda bırakacağından, üzerinde çalıştığınız proje hakkında çok net sorular sormak genellikle çok önemlidir . Yanlış yönde çalışmak için zaman kaybetmemek için açıklığa kavuşturmak için isteğin kaynağına geri dönmek değil, varsaymak önemlidir.

    Unutmayın ki teknik soruları boşlukta cevaplayacak bir pozisyon için görüşme yapmıyorsunuz. Projeler üzerinde çalışma pozisyonu için röportaj yapıyorsunuz ve her zaman yapılması gereken şeylerde belirsizlikler ve / veya yanıltıcı bilgiler olacaktır. İyi bir Görüşmeci beceri düzeyi hem bir anlayış almaya çalışacağım ve aslında verimli olur. Teknik soruları iyi yanıtlayan, ancak çok fazla el ele tutuşması gereken ve takımı yavaşlatan insanlarla ilgilenmek için insanlarla röportaj yaparken bunun gibi sorular sordum.


GÜNCELLEME:

Sadece bunun @Martin cevabında yaptığı gibi yorumlanan basit bir sorgu beceri sorusu olduğunu düşünenler için açıklığa kavuşturmak için: bunun OP'ye sunulan sorunun tam ifadesi olup olmadığını bile bilmiyoruz Ama duruma güvenebildiğimiz kadarıyla bunun bir röportajda verildiğini biliyoruz. Ve iyigörüşmeciler sadece adayların teknik becerilerini değil aynı zamanda teknik olmayan / "yumuşak" becerilerini de ortaya koydukları soru sorarlar. Martin, yorumunda sorunun gelecekteki potansiyel transfer kombinasyonları hakkında sorduğu doğru olabilir (yani "bazen bir puro sadece bir puro"). Ve eğer bu bir test sorusu olsaydı, cevabı doğru değilse şaşırırdım. Ancak, bu bir test sorusu değildir. Elbette, bu, adayın ne tür bir insan olduğunu ve bu tür belirsizliklerin çoğu kişinin fark ettiğinden daha sık ortaya çıktığı bir tasarım toplantısında nasıl performans göstereceğini denemeyen biri tarafından sorulan bir röportaj sorusu olabilir. Ama cevap verilmedi,işleri hallediyor ("İnsanları arıyorsun" sayfasında arama yap, ama her şeyi gerçekten okumalısın). Yani, her yönden eşit, ancak biri yorumu üstlenip doğru olan iki aday arasında, diğeri soru sordu ve sonra doğru cevabı alırken, kesinlikle ilk sorulana giderdim.


6
"tüm varyantlar" bana tarihsel transferlerden değil varsayımsal transferlerden bahsettiklerini açıkça gösteriyor. Ve sonra soru verilen bilgilerle mükemmel bir şekilde cevaplanabilir.
Martin Smith

7
Martin ile birlikteyim. Soru bana açık ve soruyu cevaplayacak kadar bilgi var.
paparazzo

3
@MartinSmith Yorumunuzun geçerli olmadığını veya büyük olasılıkla olmadığını söylemiyorum. Bunun olmadığını söylüyorum tek tek. Çoğu zaman bir şeyin "açık" gibi göründüğü, ancak yine de yanlış olduğu zamanlar vardır ;-) Başlangıçta söylediğim gibi, cevabım bunun bir test sorusu değil, bir röportaj sorusu olduğunu gösteriyor. Ve sık sık olmuştur "açıkça" ifade edildi şeyler yapmak istedi ve henüz tamamen uğradılar değil kişinin gerçekten istedim, ama onlar herkes terminoloji üzerinde anlaşmaya varsayılır çünkü onlar yanlış şeyi soran farkında değillerdi neyi.
Solomon Rutzky

2
@ edc65 Teşekkürler. Endişemin belirsizliğe ilişkin olduğu düşünüldüğünde, yorumunuzun yanaktaki dil belirsizliğini takdir ediyorum :).
Solomon Rutzky

2
@srutzky Sanırım burada seninle olan tek kişi benim :) Karışıma cevabını eklediğin için teşekkürler. Yüzlerce röportaj yapan biri olarak bu, aradığım düşünceli cevap türüdür. Muhtemelen bu soruyu sormazdım, ama eğer öyleyse, ideal bir aday muhtemelen benzer şekilde cevap verecekti ve açıklandıktan sonra Martin gibi bir sorgu yazacaktı. Bu yorumları okumanın temel yararı, insanların şeyleri farklı şekillerde görmeleri ve farklı varsayımlar yapmalarıdır. Bu nedenle, özellikle röportaj durumunda varsayımlarınızı her zaman açıklayın ve onaylayın!
Geoff Patterson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.