mysql关联查询
mysql数据库的统计------生成统计信息
1.distinct:在一组之中将各个唯一的值找出来,如找出所有的品牌种类
mysql>select distinct brand_kind from brand;
+---------------+
| brand_kind |
+---------------+
| A |
| B |
| C |
+---------------+
2.计数统计,使用count(*),若没有带where子句,则将统计当前表的行数
a.统计brand中的行数
mysql> select count(*)from brand;
+-----------+
| count(*) |
+-----------+
| 5 |
+-----------+
b.统计一下brand表中brand_kind字段中品牌的数量
mysql>select count(distinct brand_kind) as brandkind_count from brand;
+----------------------+
| brandkind_count |
+-----------------------+
| 3 |
+-----------------------+
c.添加where子句的count(*)统计,统计出where子句筛选出来的数据的条数。
统计出来trade表中订单时间为2017年10月的数据条数
mysql> select count(*) from trade where trade_time=201710;
+-----------+
| count(*) |
+-----------+
| 6 |
+-----------+
d.区别count(*),count(字段名),count(distinct good_kind)区别。count(*)统计被查数据的行数,count(字段名)统计该字段非NULL的数据条数,count(distinct good_kind)统计出被查数据种类数量。
mysql> select count(*), count(good_kind),count(distinct good_kind) from trade;
+-----------+------------------+----------------------------------------+
| count(*) | count(good_kind) | count(distinct good_kind) |
+----------+------------------+-----------------------------------------+
| 8 | 7 | 3 |
+----------+------------------+-----------------------------------------+
e.根据group by 语句对字段进行分组,然后联合聚合函数对数据进行查询,统计操作。
聚合函数
max(),min(),sum(),count(),avg()
内连接
select *from brand,trade where brand.brand_id=trade.brandid;
左外连接
left outer join:返回包含左表中的所有的纪录和右表中连接字段相等
right outer join:返回包含右表中的所有的纪录和左表中连接字段相等
select distinct brand_kind, count(distinct userid) as user_num,count(distinct trade_id) as trade_num,sum(money) from brand left outer join trade on brand.brand_id=trade.brandid where trade_time=201710 group by brand_kind;