每當我們需要使用現(xiàn)有表格創(chuàng)建新的表格本冲,然后需要再次查詢時,就表明我們需要使用某種子查詢
在編寫子查詢時鞍帝,查詢很容易就看起來很復雜升酣。為了便于閱讀舷暮,其實日后經(jīng)常只是你自己要閱讀:
要記住的重要事項是,在使用子查詢時噩茄,要讓讀者能夠輕松地判斷查詢的哪個部分將一起執(zhí)行下面。大部分人的做法是按照某種方式縮進子查詢。如果在子查詢后面有 GROUP BY绩聘、ORDER BY沥割、WHERE耗啦、HAVING 或任何其他語句,則按照外部查詢的同一級別縮進机杜。
#good
SELECT *
FROM (SELECT DATE_TRUNC('day',occurred_at) AS day,
channel, COUNT(*) as events
FROM web_events
GROUP BY 1,2
ORDER BY 3 DESC) sub
GROUP BY channel
ORDER BY 2 DESC;
#bad
SELECT * FROM (SELECT DATE_TRUNC('day',occurred_at) AS day, channel, COUNT(*) as events FROM web_events GROUP BY 1,2 ORDER BY 3 DESC) sub;
or
SELECT *
FROM (
SELECT DATE_TRUNC('day',occurred_at) AS day,
channel, COUNT(*) as events
FROM web_events
GROUP BY 1,2
ORDER BY 3 DESC) sub;