2014-01-17 2 views
0

내가 국가에 따라 레코드의 수를 계산하고 나에게 같은 목록 뭔가 제공하는 쿼리가 있습니다MySQL 필터 쿼리? 순간

  • 영국 = 400
  • 스페인 = 350
  • 등 ...

일부 국가는 다른 언어를 사용하므로 다른 언어로 추가되었습니다. 예 : Switzerland_Italian.

국가가 다른 언어가있는 경우 (일부는하지 않는 한) 내 목록에 별도로 다음을 계산합니다 있도록 내 쿼리를 수정하는 가장 좋은 방법이 될 것입니다, 그래서 보일 것 무엇 뭔가 같은 :

  • 영국 = 400
  • 스페인 = 350
  • 스위스 = 200
  • Switzerland_Italian = 50

겠습니까이 필요 a를 하위 쿼리? 순간 내가 가지고있는 쿼리는, 나는 새로운 랭 coloumn에 추가됩니다 :

SELECT 
    COUNT(*) AS `count`, 
    `region`, 
    `lang`, 
    DATE(NOW()) AS `week_ending` 
FROM 
    mydata.table 
WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL - 1 WEEK) 
    AND `date` < DATE(NOW()) 
GROUP BY `region`, 
    DATE(NOW()) ; 

답변

1

당신은 지역 및 LANG 모두 GROUP 할 것, 다음과 같이 :

SELECT COUNT(*) as `count`,`region`, `lang`, DATE(NOW()) as `week_ending` 
FROM mydata.table 
WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL -1 WEEK) AND `date` < DATE(NOW()) 
GROUP BY `region`, `lang`, DATE(NOW()); 
0

을 어떻게

에 대해
SELECT 
    COUNT(*) AS `count`, 
CONCAT(`region`,'_',`lang`), 
    `region`, 
    `lang`, 
    DATE(NOW()) AS `week_ending` 
FROM 
    mydata.table 
WHERE `date` > DATE_ADD(DATE(NOW()), INTERVAL - 1 WEEK) 
    AND `date` < DATE(NOW()) 
GROUP BY `region`,`lang`, 
    DATE(NOW()) ;