第一种:
在group by 中用count(*) 获取条数 ,你会很神奇的发现你获取的
不是总条数,而是每个组的条数
,这很有作用,但是如果你要获取总条数的话就会很麻烦,
我在网上搜了说用子查询
select count(1) from (
-
select fbrandid, month(fdate) from table as m
-
where 1 = 1
-
group by m.fbrandid, month(fdate)
-
) aa;
复制代码
但是代码好难懂,研究了一下
里面的查询结果是一个表,但是这个表没有名字,不给他名字就报错,所以加了一个别名aa(随便起)
count(1)也不是很好理解就换成count(fbrandid)或count(*)
第二种:
今天写查询语句遇到一个问题,就是用group by进行分组以后,用count统计分组以后的个数,
开始写的语句大体是:
select count(m.fbrandid) from table as m group by m.fbrandid, month(fdate);
数据库中的数据为:
+----------+------------+-----------+------------------------+
| Fbrandid | Fdate | Ftotalnum | Fpersons |
+----------+------------+-----------+------------------------+
| 32 | 2008-11-01 | 10 | 8 |
| 32 | 2008-11-02 | 10 | 8 |
| 32 | 2008-11-03 | 10 | 8 |
| 32 | 2008-11-04 | 10 | 8 |