MySQL - 分组和计数

时间:2013-07-31 07:44:57

标签: mysql sql

我的数据库结构包含:

操作

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| placement_id | int(11)      | YES  | MUL | NULL    |                |
| lead_id      | int(11)      | NO   | MUL | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

展示位置

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| publisher_id | int(11)      | YES  | MUL | NULL    |                |
| name         | varchar(255) | NO   |     | NULL    |                |
| status       | tinyint(1)   | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

引线

+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| status  | varchar(255) | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+

我想为每个展示位置检索一些状态(分组):

| placement_id | placement_name | count
+--------------+----------------+-------
| 123          | PlacementOne   | 12
| 567          | PlacementTwo   | 15

我尝试了无数次,我写的每个查询都显得愚蠢,所以我甚至不会在这里发帖。我没希望了。非常感谢一个评论很好的查询(所以我可以学习)。

1 个答案:

答案 0 :(得分:5)

select a.placement_id, p.name as placement_name, count(l.status)
from actions a
inner join placements p on p.id = a.placement_id 
inner join leads l on l.id = a.lead_id 
group by a.placement_id, p.name