簡體   English   中英

采訪有關SQL分組的問題

[英]Interview Question about SQL group by and having

此問題來自以下

https://www.programmerinterview.com/index.php/database-sql/advanced-sql-interview-questions-and-answers/

假設我們有兩個表:

Salesperson 
ID  Name    Age Salary


Orders
Number  order_date  cust_id salesperson_id  Amount

問題如下:

我們要從上表中檢索訂單超過1個的所有銷售人員的姓名。 您可以假設每個銷售人員只有一個ID。 我可能還會假設名稱都是不同的。

我的答案是這樣。

select Name from 
salesperson S inner join Orders O 
on S.ID=O.salesperson_id 
group by Name 
having count(number) >=2

但是,給出的答案如下:

SELECT Name
FROM Orders inner join Salesperson
On Orders.salesperson_id = Salesperson.ID
GROUP BY salesperson_id, NAME
Having count(salesperson_id) > 1

如果名稱和salesperson_id是一對一的,那么我們是否有必要在此處按語句將salesperson_id添加到分組中? 另外,如果名稱和salesperson_id的關系只是一對一,那么如果我們按salesperson_id,name分組,是否不將(salesperson_id)始終設為1?

我對此有些困惑,我想知道是否有人以前曾遇到過這個問題,也發現這很奇怪。

除了GROUP BY子句外,您的解決方案和可接受的解決方案在功能上都是相同的。

接受的解決方案同時按Namesalesperson_id匯總的可能原因是,可能是兩個或多個銷售人員碰巧具有相同的名稱。 如果發生這種情況,您的查詢將僅報告一個名稱,但會報告來自多個銷售人員的匯總結果。 但是, salesperson_idName的組合應該始終是唯一的。

除此之外,我實際上更喜歡您的版本,並且我將從salesperson表開始加入到Orders表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM