查看要求“高级SQL”的职位描述。我可以写基本查询,也可以编写任何查询,并且已经在专业环境下使用MySQL数据库,但是如果我被录用了,我将如何处理这些工作?什么是高级SQL的示例?从SQL noob到SQL master的范围是什么?
我认为最好举一个例子。如果您觉得可以用很少的参考资料或没有参考资料就快速编写以下SQL语句,那么我想您可能满足他们的Advanced SQL要求:
DECLARE @date DATETIME SELECT @date = '10/31/09' SELECT t1.EmpName, t1.Region, t1.TourStartDate, t1.TourEndDate, t1.FOrdDate, FOrdType = MAX(CASE WHEN o.OrderDate = t1.FOrdDate THEN o.OrderType ELSE NULL END), FOrdTotal = MAX(CASE WHEN o.OrderDate = t1.FOrdDate THEN o.OrderTotal ELSE NULL END), t1.LOrdDate, LOrdType = MAX(CASE WHEN o.OrderDate = t1.LOrdDate THEN o.OrderType ELSE NULL END), LOrdTotal = MAX(CASE WHEN o.OrderDate = t1.LOrdDate THEN o.OrderTotal ELSE NULL END) FROM (--Derived table t1 returns the tourdates, and the order dates SELECT e.EmpId, e.EmpName, et.Region, et.TourStartDate, et.TourEndDate, FOrdDate = MIN(o.OrderDate), LOrdDate = MAX(o.OrderDate) FROM #Employees e INNER JOIN #EmpTours et ON e.EmpId = et.EmpId INNER JOIN #Orders o ON e.EmpId = o.EmpId WHERE et.TourStartDate <= @date AND (et.TourEndDate > = @date OR et.TourEndDate IS NULL) AND o.OrderDate BETWEEN et.TourStartDate AND @date GROUP BY e.EmpId,e.EmpName,et.Region,et.TourStartDate,et.TourEndDate ) t1 INNER JOIN #Orders o ON t1.EmpId = o.EmpId AND (t1.FOrdDate = o.OrderDate OR t1.LOrdDate = o.OrderDate) GROUP BY t1.EmpName,t1.Region,t1.TourStartDate,t1.TourEndDate,t1.FOrdDate,t1.LOrdDate
(查询来源)
老实说,这是一个相对简单的查询-只是一些内部联接和一个子查询,以及一些常见的关键字(最大,最小,大小写)。