我們正在使用Firebird 2.1數據庫,並試圖運行鍼對某個特定狀態的總交易和交易的報表的查詢。每個事務都有一個成功(1)或不成功(0)的狀態。還有一個被拒絕的地位(2),但是這在評論中已經涵蓋了。我將使用不明確的數據。SQL報告:統計每個用戶的總行數並計算每個用戶的成功事務數
USER_ID, Fruit, Eaten
----------------------
1, Apple, 0
1, Banana, 1
1, Kiwi, 1
2, Apple, 1
2, Banana, 1
3, Apple, 0
我們希望做的是運行的一份報告顯示USER_ID,TOTAL_FRUIT和EATEN_FRUIT。凡TOTAL_FRUIT計數交易的總數和EATEN_FRUIT計算基於0或1
USER_ID, TOTAL_FRUIT, EATEN_FRUIT
---------------------------------
1, 3, 2
2, 2, 2
3, 1, 0
我們的「最佳」的嘗試,在這個SQL語句的總交易成功的是:
WITH alias1 AS
(SELECT USER_ID, count(Fruit) as TOTAL_FRUIT FROM myTable GROUP BY USER_ID),
alias2 AS
(SELECT USER_ID, count(Fruit) as EATEN_FRUIT FROM myTable WHERE Eaten=1 GROUP BY USER_ID)
SELECT alias2.USER_ID, TOTAL_FRUIT, EATEN_FRUIT
FROM alias1, alias2
然而,兩個數據集本身都可以正常工作,但是當一起處理時,第一個數據集只是一遍又一遍。
您以前用過'GROUP BY'? – mszymborski