之前以为sql就那点东西,很容易掌握。
这些天我在做我们网站的年度运营数据统计,统计的内容很多,也很复杂。经过几天的折腾,我领悟了SQL的思想。
1.数据列组成表,包括在数据库中实实在在的表,也可以是查询出来的数据记录组成的‘表’,这一般在子查询,嵌套查询中用得比较多。所以要在头脑中形成一个概念,一切都可以from。
一个例子如,我想查询网站上每一个分类拍品价格总额大于30万元的拍品有多少个分类, auctions.price这个字段是表示价格,当然不能这样做:
select count(*) from auctions a where sum(end_price) > 30000 group by category_id;哈哈
怎么做呢?这样做:
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;
另外一个例子
http://qichunren.iteye.com/blog/563188
总结:一切都是数据,利用连接,子查询,分组等对数据想怎么就怎么玩,感觉打通了任督二脉,很舒畅。
分享到:
相关推荐
3. **解密过程**:点击解密按钮后,SQLDecryptor会使用内置的解密算法对选定的对象进行处理,试图还原其原始T-SQL源代码。 4. **查看和编辑**:一旦解密成功,你就可以在工具中查看解密后的代码,并根据需要进行...
尽管这些版本涵盖了更多高级特性,例如面向对象的支持、在线分析处理(OLAP)以及XML支持等,但在日常开发工作中,使用的SQL大多仍然遵循**SQL92**标准。 #### 三、SQL语言的基本构成 SQL作为一种语言,其目的是帮助...
书中还新增了关于应用程序服务器体系结构中SQL角色的章节,以及SQL与XML集成使用的介绍和其他基于对象技术的内容。这些新增内容体现了SQL语言的最新发展和应用趋势。 本书不仅提供了对SQL基本知识的介绍,还包含了...
尽管如此,为了确保与早期版本的兼容性,SQL Server 2005仍然提供了对DTS的支持,允许用户继续使用或迁移原有的DTS包。 在"SQLServer2005_BC.msi"这个安装程序中,包含了x86、x64和ia64三种架构的版本,这意味着...
尽管如此,SQL Server 2005精简版依然提供了基础的数据存储和查询功能,适合用于学习SQL语言、进行简单的数据库管理以及小型项目开发。对于初学者来说,这是一个很好的入门平台,可以理解数据库的基本概念和操作。 ...
同时,它还能根据上下文提供对象语法,确保开发者使用正确的语法结构,降低出错概率。 此外,SQLPrompt还具备智能提示功能。在编写SQL时,它能自动补全关键词、函数和系统对象名,极大地提高了编写速度。不仅如此,...
在本项目中,"jquery+easyui+websql.rar"是一个包含了使用jQuery、EasyUI框架以及WebSQL(或LocalStorage)技术来实现前端数据管理的压缩包。以下将详细阐述这些技术及其相互配合的方式。 首先,jQuery是一个广泛...
总的来说,Navicat for SQL Server 是一个功能全面、易于使用的数据库管理工具,无论是在日常的数据库维护,还是在复杂的项目开发中,都能提供极大的便利。通过其提供的各种工具和特性,用户可以高效地完成SQL ...
- 使用正则表达式过滤掉可能引起SQL注入的字符。 - 对用户输入进行严格的类型检查。 **参数化查询** - 使用预编译语句或参数化查询,确保输入值不会被解释为SQL命令的一部分。 **限制数据库权限** - 应用程序...
在实际应用中,除了使用此类工具,还可以采取其他策略来保护SQL Server数据库,例如设置合适的恢复模式(简单、完整或大容量日志),定期执行检查点,以及合理规划存储和硬件资源。另外,了解SQL Server的错误日志和...
- **混合身份验证模式**:该模式允许使用 SQL Server 自身的身份验证机制或者 Windows 身份验证。管理员可以根据实际需求灵活选择验证方式。 - **登录名管理**:登录名是用于连接 SQL Server 实例的身份标识。登录...
尽管如此,对于那些运行在旧版Java环境下的应用程序,`sqljdbc.jar`仍然是一个可靠的选择。 安装这两个驱动包的过程相对简单。通常,你只需要将对应的`.jar`文件添加到Java项目的类路径中,即可在代码中通过`Class....
尽管如此,如果对于基本的SQL语法和通用的关键字,这些工具通常能够提供良好的格式化效果。对于那些对格式化要求不那么严格的情况,这样的工具是够用的。 "sql format"标签暗示了我们将讨论的是SQL代码的自动格式化...
尽管如此,某些老旧的浏览器(如旧版的Chrome和Safari)仍然支持WebSQL。 2. **基本操作** - **创建数据库**:通过`window.openDatabase()`方法创建一个新的数据库,需要指定数据库名称、版本、描述和大小。 - **...
不仅如此,该工具还能够生成常用的SQL语句,如SELECT、INSERT、UPDATE和DELETE。对于查询语句,它会根据表结构生成基本的查询模板,开发者可以在此基础上根据具体需求进行修改。对于插入、更新和删除操作,工具会...
在实际使用中,用户需要了解如何创建数据库、定义表结构、设置主键和外键、使用T-SQL进行数据操作以及执行备份和恢复策略。同时,了解如何通过SQL Server的安全机制来控制用户访问权限也是至关重要的。如果迷你SQL2K...
正因如此,Notepad++提供了SQL格式化插件,使得用户可以更方便地管理和编辑SQL语句。 在Notepad++中,有两款针对SQL格式化的插件被提及:SQLLinForm和SqlFormatterNppPlugin。这两个插件都是为了帮助用户将杂乱无章...
尽管如此,Access可以通过ODBC(Open Database Connectivity)或者ADO(ActiveX Data Objects)与SQL Server连接,从而在Access的环境中执行SQL Server上的查询和操作。 在文件名“BSQL”中,可能包含了关于使用SQL...
【标题】"SQL_user.zip_sql server_vc sql" 提供了一个关于使用VC++(Visual C++)与SQL Server数据库交互的示例,特别是涉及到在SQL Server 7中动态管理用户的相关操作。这个压缩包包含了源代码和其他可能的文档,...