PostgreSQL
想對通過聚合創(chuàng)建的查詢中的元素執(zhí)行 WHERE 條件谨朝,就需要使用 HAVING。HAVING總是出現(xiàn)在GROUP BY之后甥绿,它可以對聚合的數(shù)據(jù)過濾字币,而WHERE不能
SELECT s.name, COUNT(a.id)
FROM accounts a
JOIN sales_reps s
ON a.sales_rep_id = s.id
GROUP BY 1
HAVING COUNT(a.id) > 5
ORDER BY 2 DESC
DATE_TRUNC 使你能夠?qū)⑷掌诮厝〉饺掌跁r間列的特定部分。常見的截取依據(jù)包括日期
共缕、月份
和 年份
洗出。這是一篇 MODE 發(fā)表的精彩博文,介紹了關(guān)于此函數(shù)的強大功能图谷。
DATE_PART 可以用來獲取日期的特定部分翩活,但是注意獲取 month
或 dow
(day of week)意味著無法讓年份按順序排列阱洪。而是按照特定的部分分組,無論它們屬于哪個年份菠镇。
要了解其他日期函數(shù)冗荸,請參閱這篇文檔
CASE 條件語句
CASE 語句始終位于 SELECT 條件中。
CASE 必須包含以下幾個部分:WHEN辟犀、THEN 和 END俏竞。ELSE 是可選組成部分,用來包含不符合上述任一 CASE 條件的情況堂竟。
你可以在 WHEN 和 THEN 之間使用任何條件運算符編寫任何條件語句(例如 WHERE)魂毁,包括使用 AND 和 OR 連接多個條件語句。
你可以再次包含多個 WHEN 語句以及 ELSE 語句出嘹,以便處理任何未處理的條件席楚。