前一段时间的工作中有一项是计算实时统计结果并生成相应的数据表(主要是算产品PV,UV的环比什么的)。
所谓实时统计,就是终端请求Server接口时把相应数据写进日志,然后使用Python分析日志程序,将各统计项整理成各自的文件。再将这些整理好的文件定时发送到解析文件接口中解析并入库。最后写SQL计算统计结果。
顺便提一句,我们用的是MySQL,单库千万量级以下的数据都没问题。例如每天往表里写2w数据,则10000000/20000 = 500天内不需要优化。
回到正题,下面是这个SQL中使用到的一些技巧(SQL实在太长就不贴了):
1.select子句中的条件查询:
(CASE
WHEN sd.type=1 THEN (select a.title from db1.apk a where a.id=sd.materialId)
WHEN sd.type=2 THEN (select d.title from db1.ad d where d.id=sd.materialId)
WHEN sd.type=3 THEN (select w.title from db1.wallpaper w where w.id=sd.materialId)
END) as title,
原来也知道在SQL中可以写条件查询,但是没用过,这次用了一下,就是CASE...WHEN...THEN...[ELSE] ...END...
2.多库join查询:
说实话,这个原来确实没听说过(不知道其它数据库如Oracle什么的是不是也有这个功能).上网查了一下才发现的,自己试一试果然没问题。所谓多库join就是不同数据库中的表进行关联查询。
解决方法:在MySQL中其实很简单,就是查询时在表名前加上数据库名就行啦:)
例如上面的sql语句,db1是一个库中的表,将其查询结果作为db2表中的查询列(当然做join等操作也是没问题的)。
3.相关子查询:
SELECT
sd.statTime,sd.type,sd.materialId,sd.pv,sd.token,
(select SUM(totalpvtab.pv) from statdetail totalpvtab where totalpvtab.statTime=sd.statTime and totalpvtab.materialId=sd.materialId and totalpvtab.type=sd.type) totalpv,
FROM ....
就是将外层查询的列作为子查询的查询条件了。
4.SQL函数:
还用到一些SQL函数如:
DATEDIFF(sd.statTime,a.createdTime) -- 计算两个日期天数差,
ABS(X) -- 取X绝对值,
等等。
先写到这里吧,明天继续。
分享到:
相关推荐
在IT行业中,SQL(Structured Query ...以上是SQL查询语句的精华总结,掌握这些核心概念和用法,能帮助开发者在实际工作中更高效地操作数据库。通过不断实践和学习,可以进一步提升在数据库管理和开发方面的专业技能。
6. 子查询:嵌套查询,可以在主查询中使用一个或多个查询,以获取更复杂的查询结果。 三、数据库设计原则 1. 第一范式(1NF):确保每列都不可再分,避免冗余数据。 2. 第二范式(2NF):在1NF基础上,消除非主...
本篇文章将针对"实际工作中常用sql积累及总结"进行深入探讨,涵盖事务处理、游标、存储过程、行列转换、递归查询、数据库备份与还原、分布式查询、批量更新、合并记录以及动态SQL等多个关键知识点。 1. **事务处理*...
"面试SQL经典总结"这个主题,通常涵盖了SQL的基础概念、常用查询语句、高级功能以及在实际面试中可能遇到的问题。下面,我们将深入探讨这些关键知识点。 1. SQL基础: - 数据库模型:了解关系型数据库的基本原理,...
在SQL Server中,处理复杂SQL语句查询是数据库管理员和开发者的必备技能。这涉及到多个方面的知识,包括但不限于多表联接、索引优化、触发器应用和存储过程的编写。下面将对这些主题进行详细阐述。 首先,**多表...
四、SQL查询基础 1. SELECT语句:用于从数据库中检索数据,是最常用的SQL命令。例如: ```sql SELECT * FROM 表名; ``` 这将返回表中的所有记录和字段。 2. WHERE子句:用于过滤数据,根据指定条件选择满足的...
### ORACLE中SQL查询优化技术 #### 一、引言 在现代企业级数据库应用中,Oracle数据库因其高性能、高可靠性和丰富的功能被广泛采用。然而,在实际的应用场景下,即使是设计良好的数据库系统也可能因为查询效率低下...
4. 子查询(Subquery):子查询是在一个查询语句中嵌套另一个查询,用于获取被外部查询使用的结果集。它可以出现在SELECT、FROM、WHERE、HAVING等子句中,帮助完成复杂的数据筛选和计算。 5. CASE-END语句:CASE-...
总结,SQL查询分析器是数据库管理人员和开发者的得力助手,它提供了强大的SQL编写、测试和优化功能,尤其在增强版中,更多高级特性和工具进一步提升了工作效率和数据管理质量。熟练掌握并运用SQL查询分析器,对于...
子查询是指在一个查询语句中嵌套另一个查询语句。子查询可以出现在SELECT、FROM或WHERE子句中。 ```sql SELECT * FROM table1 WHERE column IN (SELECT column FROM table2); ``` 2. **联结查询**: 联结...
1. 改进的用户界面:提供了一个更现代化、更易于使用的界面,支持多文档界面(MDI),可以在同一个窗口中打开多个查询窗口。 2. 错误提示和智能感知:自动完成功能提高了编码效率,提供了对语法错误的即时反馈。 3. ...
SQL Server查询分析器是Microsoft SQL Server数据库管理系统中的一个重要工具,主要用于编写、执行和测试SQL语句,以及查看查询结果。在Windows 10操作系统(x64)环境下,选择一个兼容且功能强大的查询分析器至关...
根据上述描述,完整的SQL查询过程可以总结如下: 1. 创建一个视图StuClassView,将学生表Students和班级表Classes通过ClassId字段进行左连接。 2. 在视图中包含需要的字段信息,如学生的基本信息和班级的详细信息...
SQL语句优化是一项重要的数据库管理技能,能够显著提高数据库查询性能,减少资源消耗,缩短响应时间。以下是对上述文件内容中提及的关键知识点的详细总结: 1. 选择最有效的表名顺序 在使用基于规则的优化器时,...
SQL查询分析器是一款用于执行和测试SQL语句的工具,尤其在数据库开发和管理中扮演着重要角色。这款“SQL查询分析器绿色精简版”更强调便携性和轻量化,使得用户无论在哪里都能快速地进行SQL操作。下面将详细阐述SQL...
7. 索引:索引可以显著提高查询速度,通过CREATE INDEX语句创建,INDEX可以基于一个或多个列。 8. 存储过程和触发器:存储过程是预编译的SQL语句集合,可以提高性能并简化复杂的操作;触发器则是在满足特定条件时...
一个高效的SQL查询不仅能提高系统的性能,还能节省大量的计算资源。本文将深入探讨SQL查询的艺术,通过解析标题与描述中的关键词“SQL查询的艺术”、“SQL查询高效”,为大家呈现一系列实用的技巧和最佳实践。 ####...
总结,SQL2000查询分析器是数据库管理工作中不可或缺的工具,熟练掌握其使用方法和技巧,能够大幅提升工作效率,有效解决数据库相关问题。结合“sqlkit2000”的实践,我们能够更好地理解SQL Server 2000的特性,...