2015-11-04 70 views
-1

我試圖生成一份報告,報告每天在每個城市中做多少個工作,並顯示我們從哪裏獲得該工作。在一列中對多個值進行分組和計數

我有一列有一些郊區(大約300-350)。這是兩個城市的郊區。我想將這些郊區分組到他們適當的城市,並且顯示數量。

我的想法是這樣的:

Site_Suburb LIKE '%Suburb1%' OR LIKE '%Suburb2%' AS `City1` 
Site_Suburb LIKE '%Suburb3%' OR LIKE '%Suburb4%' AS `City2 

(只是粗略的僞代碼,以幫助給你一個想法..)

總的來說,我需要GROUP BY DateCityJob Source

報告到目前爲止,我有這個查詢:

SELECT 
from_unixtime(`reservations`.`created`) AS `formatted_date`, 
`reservations`.`start_date` AS `start_date`, 
`reservations`.`site_suburb` AS `site_suburb`, 
`reservations`.`job_source` AS `job_source`, 

DATE(FROM_UNIXTIME(`reservations`.`created`)) AS date, 

COUNT(`reservations`.`created`) as group_by_count from `reservations` 

GROUP BY 
DATE(FROM_UNIXTIME(`reservations`.`created`)), 
`reservations`.`site_suburb`, 
`reservations`.`job_source` 

order by from_unixtime(`reservations`.`created`) desc 

在此先感謝^ _^

+0

發佈一些示例數據以幫助我們理解您實際上正在嘗試做什麼。 – lookslikeanevo

回答

0
select 
    case 
     when Site_Suburb LIKE '%Suburb1%' OR Site_Suburb LIKE '%Suburb2%' AS `City1` 
     when Site_Suburb LIKE '%Suburb3%' OR Site_Suburb LIKE '%Suburb4%' AS `City2 

    else site_suburb end Suburb 
    ,job_source 
    ,DATE(FROM_UNIXTIME(`reservations`.`created`)) AS date 
    ,count(*) as jobs 

from 
    reservations 

group by 
    case 
     when Site_Suburb LIKE '%Suburb1%' OR LIKE '%Suburb2%' AS `City1` 
     when Site_Suburb LIKE '%Suburb3%' OR LIKE '%Suburb4%' AS `City2 

    else site_suburb end 
    ,job_source 
    ,DATE(FROM_UNIXTIME(`reservations`.`created`)) 
+0

嗨looklikeanevo,謝謝你的回覆。 我使用: '選擇 CASE WHEN site_suburb LIKE '%庫帕若%' 或site_suburb LIKE '%曼斯菲爾德%',然後 '布里斯班' WHEN site_suburb LIKE '%海倫茲維爾%',然後 '黃金海岸' END FROM保留;' 這似乎很好,但是有沒有更容易的方法來添加一堆變量(我有300-350)。是否有一些簡單的語法像(suburb1 | suburb2 | suburb3)? – Azyrus

+0

@Azyrus更簡單的方法是創建一個查找表並加入它 – lookslikeanevo

0

也許你想要的是in

select (case when Site_Suburb in ('Suburb1', 'Suburb2') then 'City1' 
      when Site_Suburb in ('Suburb3', 'Suburb4') then 'City2' 
      else site_suburb 
     end) Suburb, 
     job_source, 
     DATE(FROM_UNIXTIME(`reservations`.`created`)) AS date, 
     count(*) as jobs 
from reservations 
group by suburb, job_source, DATE(FROM_UNIXTIME(`reservations`.`created`)); 

這顯然不適用於所有的情況下工作,因爲in查找沒有通配符精確匹配。

真的,處理這個問題的最佳方法是查找表,其中一列中有site_suburb,另一列中有city