MySQL - 选择count(*),分组依据,但保持分离

时间:2009-10-21 18:08:57

标签: sql mysql

我有一张录制节目视图的表格。每个程序可以有两种不同的类型(1 =视频,2 =音频)

我的表格记录了观点:

TABLE views
view_id
user_agent
created_at
type
program_id (which related to table programs)

我当前的MySQL电话:

SELECT COUNT(*) as views, 
       `mp`.`title`, 
       `mp`.`program_date` as date 
FROM (`applications_media_views` as v) 
JOIN `media_programs` as mp ON `v`.`program_id` = `mp`.`program_id` 
GROUP BY `v`.`program_id` 
ORDER BY `views` desc

麻烦的是,这并没有将类型分开。我需要通过program_id报告视图,但我需要将类型分开。

我错过了什么?

5 个答案:

答案 0 :(得分:2)

您可以按不止一件事进行分组。试试这个:

GROUP BY `v`.`program_id`, `v`.`type`

答案 1 :(得分:1)

您是否需要“按program_id分组,输入”并在查询中选择类型?

如果没有,您能否显示一个符合您需要的示例查询输出?

答案 2 :(得分:1)

您需要在SELECT和GROUP BY子句中添加v.type:

SELECT COUNT(*) as views, 
       `mp`.`title`, 
       `mp`.`program_date` as date,
       v.type 
FROM (`applications_media_views` as v) 
JOIN `media_programs` as mp ON `v`.`program_id` = `mp`.`program_id` 
GROUP BY `v`.`program_id`, v.type 
ORDER BY `views` desc

您将获得每个程序/类型组合的输出行。

答案 3 :(得分:0)

您应该在group by子句中添加v.type,并且还应该在select子句中添加v.type,以便查看哪个集合来自哪个程序类型。

答案 4 :(得分:0)

上面的答案都很好。但在我看来,你应该在你的group by子句中放入“title”和“program_date”,因为它们不存在于聚合函数中。