2016-09-28 127 views
0

我有一個數據庫,其中包含有關志願者及其參與一系列事件的信息。計數從分組的SQL計數函數輸出的不同值

下面的查詢給了我他們的名單和總人次

SELECT 
    volunteers.last_name, 
    volunteers.first_name, 
    count (bookings.id) 
FROM 
    volunteers, 
    bookings 
WHERE 
    volunteers.id = bookings.volunteer_id 
GROUP BY 
    volunteers.last_name, 
    volunteers.first_name 

我想要的結果表顯示人次的不同數量和多少有各自的;所以如果五個人做了一個事件,它會在第一列顯示1,在第二列顯示5,依此類推。

感謝

+0

您可以發佈您的表格結構以及您的結果應該如何看起來像 –

+0

包括樣本表格數據。 – jarlh

+1

樣本數據和期望的結果將有所幫助。你還應該學會使用適當的,明確的'JOIN'語法。此外,你在你想要的描述中提到「事件」,但你沒有這樣的列或表。 –

回答

0

如果我理解正確的,你要什麼我所說的「直方圖的直方圖」查詢:

select numvolunteers, count(*) as numevents, min(eventid), max(eventid) 
from (select b.eventid, count(*) as numvolunteers 
     from bookings b 
     group by b.eventid 
    ) b 
group by numvolunteers 
order by numvolunteers; 

第一列是預訂了一個「事件」的志願者人數。第二個是發生這種情況的事件的數量。最後兩欄只是具有給定數量的志願者的事件的例子。

+0

謝謝戈登,你的解決方案正是我所追求的。 – Alex