我有一张完全像这样的表
|month|year|candidate_id|emp_id
| 6|2016|10 |5
| 6|2016|11 |5
| 6|2016|12 |5
| 7|2016|13 |5
| 7|2016|14 |5
所以我想计算每个月添加多少候选人并显示月份,年份和总候选人,如下所示
|Month|Year|Total
| 6|2016|3
| 7|2016|2
我尝试使用这个sql脚本
SELECT
c.MONTH,
c.YEAR,
a.total
FROM
wp_tsf_reports c,
(
SELECT
COUNT(*) total
FROM wp_tsf_reports b
WHERE b.emp_id = '5'
GROUP BY b.MONTH, b.YEAR DESC
) a
WHERE
c.emp_id = '5'
GROUP BY c.MONTH, c.YEAR DESC
这是
的输出|Month|Year|Total
| 6|2016|3
| 7|2016|3
你可以看到它显示3次,其中第6个月的总数应为3,第7个月则为2。
任何帮助都是适当的
答案 0 :(得分:4)
使用此
select month, year, count(*) as total from table
where empid=5
group by month,year
答案 1 :(得分:1)
不要使用任何复杂或子查询,这可以使用单个查询
来实现select month, year, count(1) total from wp_tsf_reports
where empid = 5
group by month,year
答案 2 :(得分:0)
您可以尝试使用以下查询,您将获得所需的输出。
SELECT
month,
year,
count(*) as total
FROM table_name
where emp_id='5'
group by month,year
答案 3 :(得分:0)
像这样的简单查询
select count(*),month,year from report group by month having count(*) > 1;
结果
+----------+-------+------+
| count(*) | month | year |
+----------+-------+------+
| 3 | 6 | 2016 |
| 2 | 7 | 2016 |
+----------+-------+------+
2行(0.00秒)
答案 4 :(得分:0)
只是解释原始查询的注释(接受的解决方案非常适合解决问题)。
|本月|今年|共 | 6 | 2016 | 3 | 7 | 2016 | 2 我尝试使用这个sql脚本
您的子查询是
SELECT COUNT(*) total
FROM wp_tsf_reports b
WHERE b.emp_id = '5'
GROUP BY b.MONTH, b.YEAR DESC
这将返回2行: -
Total
3
2
然后将其与wp_tsf_reports表交叉连接,给予(暂时): -
|month|year|candidate_id|emp_id|total
| 6|2016|10 |5 |3
| 6|2016|10 |5 |2
| 6|2016|11 |5 |3
| 6|2016|11 |5 |2
| 6|2016|12 |5 |3
| 6|2016|12 |5 |2
| 7|2016|13 |5 |3
| 7|2016|13 |5 |2
| 7|2016|14 |5 |3
| 7|2016|14 |5 |2
您还没有从子查询返回月份和年份,也没有根据月份/年份指定加入,因此交叉连接为您提供表格和子查询中的每个行组合。
然后,GROUP BY将从每个月/每年的1行中选择值(即总列的值)。 MySQL选择使用哪些行值是未指定的。它可能是3或2,甚至可能会有所不同。
因此你得到: -
|Month|Year|Total
| 6|2016|3
| 7|2016|3
但同样可以得到
|Month|Year|Total
| 6|2016|2
| 7|2016|2