之前以为sql就那点东西,很容易掌握。
这些天我在做我们网站的年度运营数据统计,统计的内容很多,也很复杂。经过几天的折腾,我领悟了SQL的思想。
1.数据列组成表,包括在数据库中实实在在的表,也可以是查询出来的数据记录组成的‘表’,这一般在子查询,嵌套查询中用得比较多。所以要在头脑中形成一个概念,一切都可以from。
一个例子如,我想查询网站上每一个分类拍品价格总额大于30万元的拍品有多少个分类, auctions.price这个字段是表示价格,当然不能这样做:
[color=green]select count(*) from auctions a where sum(end_price) > 30000 group by category_id;[/color]哈哈
怎么做呢?这样做:
所以通过这个例子,应该可以很好地说明了1这个观点了。
2.连接(join)很强大,随你所想。 join on
3.分组很强大,想怎么分就怎么分。group by的时候,只能select 这个组和count还有sum之类的,但是不要忘记了你可以group by 多个列,这样的话,就能select多个列出来了。
一个例子:如我们网站要统计每个专场(special_topics表)中的拍品(auctions)的拍品件数和成交额。我想要的结果是 三列:专场id,专场名,成交件数,成交总额。
一般是这样做:
另外一个例子[url]http://qichunren.iteye.com/blog/563188[/url]
总结:一切都是数据,利用连接,子查询,分组等对数据想怎么就怎么玩,感觉打通了任督二脉,很舒畅。
这些天我在做我们网站的年度运营数据统计,统计的内容很多,也很复杂。经过几天的折腾,我领悟了SQL的思想。
1.数据列组成表,包括在数据库中实实在在的表,也可以是查询出来的数据记录组成的‘表’,这一般在子查询,嵌套查询中用得比较多。所以要在头脑中形成一个概念,一切都可以from。
一个例子如,我想查询网站上每一个分类拍品价格总额大于30万元的拍品有多少个分类, auctions.price这个字段是表示价格,当然不能这样做:
[color=green]select count(*) from auctions a where sum(end_price) > 30000 group by category_id;[/color]哈哈
怎么做呢?这样做:
select a.category_id ,sum(a.end_price) price from auctions a group by a.category_id;
这个查出的结果作为一个临时的表,然后再来操作这个临时表,那么就应该是下面这个sql了:select count(*) from
(
select a.category_id ,sum(a.end_price) as price from auctions a group by a.category_id
)
where price > 300000
所以通过这个例子,应该可以很好地说明了1这个观点了。
2.连接(join)很强大,随你所想。 join on
3.分组很强大,想怎么分就怎么分。group by的时候,只能select 这个组和count还有sum之类的,但是不要忘记了你可以group by 多个列,这样的话,就能select多个列出来了。
一个例子:如我们网站要统计每个专场(special_topics表)中的拍品(auctions)的拍品件数和成交额。我想要的结果是 三列:专场id,专场名,成交件数,成交总额。
一般是这样做:
select a.special_topic_id,count(*), sum(a.end_price * (1+a.ac_buycharge/100)) from auctions a
where a.ac_onsale=3
group by a.special_topic_id,order by a.special_topic_id;
这样只能显示专场id,现可以连接一下专场表(special_topics),然后group by 一下:select a.special_topic_id,st.cn_n,count(*), sum(a.end_price * (1+a.ac_buycharge/100)) from auctions a
join special_topics st on st.id=a.special_topic_id
where and a.ac_onsale=3
group by a.special_topic_id,st.cn_n order by a.special_topic_id;
另外一个例子[url]http://qichunren.iteye.com/blog/563188[/url]
总结:一切都是数据,利用连接,子查询,分组等对数据想怎么就怎么玩,感觉打通了任督二脉,很舒畅。