2015-04-12 87 views
0

我是一個完整的newb,所以原諒我。mysql:以標題顯示多個結果

我試圖讓結果顯示2個或更多不同的標題。

SELECT sum(fare) AS totalfare, count(*) AS fare10 
where fare>10 
FROM tbl 

我試圖讓WHERE聲明僅適用於count,而不是sum,並有結果顯示爲「totalfare」「fare10

SELECT sum(fare) AS totalfare 
FROM tbl 
union 
SELECT count(*) AS watever 
FROM tbl 
where fare > 10 

我已經試過這種方式,但結果網格會將1題下的答案吐出爲總費用。是否有可能將其顯示爲totalfare | whatever

+1

'哪裏''從'開始'後面。我認爲這是一個印刷錯誤,並投票結束。 –

+0

謝謝大家。你們很棒。我是一個全新的自學者。 :) – groo

回答

0

你想有條件聚集:

SELECT sum(fare) AS totalfare, 
     sum(case when fare > 10 then 1 else 0 end) as fare10 
FROM tbl; 

在MySQL中,你還可以縮短這:

SELECT sum(fare) AS totalfare, 
     sum(fare > 10) as fare10 
FROM tbl; 
+0

哇謝謝。一個後續問題是爲什麼這個聲明將票價總和(票價> 10)作爲票價10,計算入口數> 10,而不是僅將票價值> 10的總和計算在內? – groo

+0

@groo。 。 。因爲'票價> 10'是一個布爾表達式。 MySQL將數字上下文中的布爾表達式視爲整數,其中0代表假,1代表真。 –

+0

@groo。 。 。作爲OP,您有權接受您喜歡的任何答案。但讀過這個問題的任何人都應該意識到,從易於編寫和更好的性能(它只讀取表格一次並彙總一次結果)這個方面來看,這個答案更好。 –

1

最後你解釋了你的問題。只有在具有相同字段的表(結果集)時才能執行UNION。這是你需要的。上面的查詢直接從兩個子查詢創建的派生表中選擇。

SELECT 
    * 
FROM 
    (SELECT 
     SUM(fare) AS totalfare 
    FROM 
     tbl) a, 
    (SELECT 
     COUNT(*) AS watever 
    FROM 
     tbl 
    WHERE 
     fare > 10) b 

你會得到結果一行

[ totalfare | watever ] 
    number  number 
+0

謝謝。我開始看到它是如何工作的。 – groo