有兩個表A和B與下面的列和樣本數據最後一小時數和最後接收的
表甲
Id Code Name Active
---------------------------------
1 A1 Apple t
2 B2 Banana t
3 C1 Cherry f
4 D2 Date t
表乙
Aid Received
-----------------------------------
1 2014-10-02 10:24:55.095714
2 2014-10-02 10:54:53.226128
3 2014-10-02 15:39:59.683531
1 2014-10-02 15:39:59.862021
4 2014-10-02 15:42:19.923144
4 2014-10-02 15:49:29.964731
1 2014-10-02 15:53:27.586373
Aid
是來自表的外鍵A
我需要顯示的所有名字,在過去一小時每個接收的最後接收的時間數和
用於採樣數據的預期輸出如下
Name Count LastReceived
-------------------------------------------
Banana 0 2014-10-02 10:54:53.226128
Apple 2 2014-10-02 15:53:27.586373
Date 1 2014-10-02 15:49:29.964731
查詢我寫到目前爲止如下
SELECT
A.name,
COUNT(B.Aid) AS Count,
MAX(B.Received) AS LastReceived
FROM
A
FULL OUTER JOIN
B
ON A.id = B.Aid
WHERE B.Received > (NOW() - INTERVAL '1 hour') AND A.Active = TRUE --approx. 3pm to 4pm 10/2/2014
GROUP BY A.name
ORDER BY Count, A.name
我沒有得到預期的輸出與此查詢。我應該如何修改查詢以獲得預期的輸出?
編輯
我需要零計數顯示首字母順序排列,然後按字母順序休息用的那些命令的結果。我可以在單個查詢中執行此操作嗎?我知道加入ORDER BY Count, A.name
是行不通的。
我編輯了這個問題。你可以修改答案以包含提到的順序嗎? – Ram 2014-10-03 14:55:32
@Srikanth我已添加 – Laurence 2014-10-03 18:23:16
謝謝。有用。你能解釋一下你在外面的'CASE WHEN'上做了什麼嗎? – Ram 2014-10-03 18:29:58