目前我有一个查询,它计算取决于国家/地区的记录数量,并给我一个类似以下的列表:
- 英国 = 400
- 西类牙 = 350
- 等等...
我现在添加了另一列语言,因为有些国家/地区有不同的语言,例如瑞士_意大利语。
修改我的查询的最佳方法是什么,以便如果该国家/地区有不同的语言(有些国家没有),它将在我的列表中单独计算这些语言,因此它看起来像:
- 英国 = 400
- 西类牙 = 350
- 瑞士 = 200
- 瑞士_意大利语 = 50
这需要子查询吗?我目前的查询是,我已在新的 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`,
DATE(NOW()) ;
最佳答案
您必须按区域和语言进行分组,如下所示:
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());
关于MySQL过滤查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182321/