MySQL过滤查询?

时间:2014-01-17 09:31:55

标签: mysql sql

目前我有一个查询计算依赖于国家/地区的记录数量,并给我一个类似的列表:

  • UK = 400
  • 西班牙= 350
  • 等...

我现在已经添加了另一个语言coloumn,因为有些国家/地区有不同的语言,例如Switzerland_Italian。

修改我的查询的最佳方法是什么,如果国家/地区有不同的语言(有些人没有),它会在我的列表中单独计算,所以它看起来像:

  • UK = 400
  • 西班牙= 350
  • 瑞士= 200
  • Switzerland_Italian = 50

这需要子查询吗?我现在的查询是,我已经添加了新的lang 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()) ;

2 个答案:

答案 0 :(得分:1)

您必须同时使用GROUP BY区域和lang,如下所示:

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());

答案 1 :(得分: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()) ;