下面是我爲這個問題創建了一個名爲「Salary_table」的數據表: 即使該存儲桶中的項目計數爲0,如何使用大小寫聲明保留存儲桶?
所以我想找到每個部門的每個薪金桶的員工數量。桶是
"<$100" "$100-$200" and ">$200"
所需的輸出是:
下面是我爲實現這一任務的代碼:
select distinct(st.department) as "Department",
sb.salary_bucket as "salary range", count(*)
from Salary_table st
Left join (
select department, employee, case
when salary < 100 then "<$100"
when salary between 100 and 200 then "$100-$200"
else ">$200"
end
as salary_bucket
from Salary_table
) sb
on sb.employee = st.employee
group by st.department, sb.salary_bucket
order by st.department, sb.salary_bucket
;
,但我的輸出是有點短的什麼IM期待:
有兩個問題,我的電流輸出:
- 0員工收入的工資在桶範圍內未列出的桶;我想它被列爲一個值爲「0」
- 儘管我在聲明「order by」中添加了薪水桶,但它並不是正確的順序,但我認爲它是b/c的文本,所以不能真正去做。
我真的很感激一些提示和指導如何解決/實現上面提到的這兩個問題。非常感謝!
我已經試過
- 我試圖用「左連接」,但輸出師出同
- 我嘗試「按訂單」的條款加入,但似乎沒有對文字工作桶
哪些DBMS您使用的?另外:'distinct'是** NOT **的一個函數。它始終適用於選擇列表中的所有列 –
嗨@a_horse_with_no_name,非常感謝您的回覆!我沒有使用任何特定的DBMS,因爲我仍在學習SQL。我從這裏學習使用「獨特」:http://www.w3schools.com/sql/sql_distinct.asp。這不是一個功能? – alwaysaskingquestions