`

工作中的一个SQL查询总结

 
阅读更多

 

前一段时间的工作中有一项是计算实时统计结果并生成相应的数据表(主要是算产品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绝对值,
等等。
先写到这里吧,明天继续。
分享到:
评论

相关推荐

    实际工作中常用sql积累及总结

    实际工作中sql积累与总结。包括事物,游标,存储过程,行转列,递归树,递归查找所有的子节点,递归查找所有的父节点,数据库备份与还原,分布式查询,批量更新,合并记录,动态sql...

    最常用的sql查询整理

    总结最常用的sql查询。日常工作都会用到的语句。方便查看。

    精通SQL--结构化查询语言详解

    8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的实例表 157 9.2 表的基本连接 158 9.2.1 连接表的目的 158 9.2.2 简单的二表连接 159 9.2.3 多表连接 161 9.2.4 使用表别名 162 ...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    经典SQL脚本大全

    │ 得到一个字符串在另一个字符串中出现的次数.sql │ 数字转换成十六进制.sql │ 比较第一与第二个字符串,是否有连续的5个字符相同.sql │ 生成查询的模糊匹配字符串.sql │ 简繁转换.sql │ 统计一个表中某个字符...

    SQL查询语句使用详解

    工作之余做了一点总结,希望能给大家带来一点帮助

    sql总结.doc

    1、索引 ·什么是索引 ·索引的基本原理 ·索引的基本写法 ·索引的分类 ... 比如你判断一个班上的同学数学成绩怎么样,你就可能用游标,先把全部的成绩查询到游标中,之后再循环一条条进行判断处理。

    HIVE-SQL开发规范.docx

    hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询...

    SQL入门与进阶学习总结

    都是我自己在工作和学习中的笔记,,其中包括:SQL MySQL 存储过程 SQL技巧 SQL常用命令 联表查询 事务 分页 远程跨库操作等等,希望对各位有所帮助!

    SQL21日自学通

    你的第一个查询 33 总结 37 问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的进一步处理 60 目标 60 汇总函数 60 COUNT61 SUM 61 AVG 63 MAX 63 MIN 64 VARIANCE65 STDDEV66 日期/...

    Sqlserver2000经典脚本

    -格式化.sql │ 得到一个字符串在另一个字符串中出现的次数.sql │ 数字转换成十六进制.sql │ 比较第一与第二个字符串,是否有连续的5个字符相同.sql │ 生成查询的模糊匹配字符串.sql │ 简繁...

    RedGate SQL Prompt Pro.5.1.8.2 破解完整

    此为完整版,可以在我资源内找可以在我的资源找到单独5.1.8.2安装包或者单独的注_册资源 ...一个首选的样式格式化的SQL 总结脚本 解密加密的对象 智能重命名一个对象在数据库中中的任何时间更改名称

    基于ASP+SQL公交查询系统

    本系统采用简单灵活的ASP语言,并结合简单灵活的SQL数据库,提供用户一个完全开放的查询平台。 通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了公交信息管理的系统化、规范化和自动化,这样不仅减少...

    SQL注入攻击与防御

    针对SQL注入隐蔽性极强的特点,本书重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。  本书...

    SQL SERVER 2000开发与管理应用实例

    本书不但融合了作者在使用SQL Server 2000过程中遇到的各种常见问题和应用案例,还总结了作者几年来在CSDN 社区SQL Server版所解决的大量问题,面向实际项目需求,涉及不同类型的应用,能够多角度地引导读者学习相关...

    mysql基本语法,增删改查大全总结,以及常用的sql语句总结

    mysql语法大全总结,内含DDL,DML,DQL,DCL等语句,可作为工作学习的小字典,随时查看学习,查询所有数据库、查询当前数据库、创建数据库、删除数据库、切换数据库、查询当前数据库的所有表、查看指定表结构、查询指定...

    excel导入sql2005的几种方法归纳

    [SQL]将Excel表数据导入SQL Server2005的几种方法归纳 ...当数据不完整或数据格式对应不上时,使用导入工具会出错,利用SQL查询语句就更便捷。当结合以上两种方法的优点,利用C#自己开发出数据导入工具是最佳选择。

    php+sql成绩查询系统(系统+论文+答辩PPT).zip

    论文和答辩PPT详细介绍了系统的设计思路、技术实现和应用价值,是对该成绩查询系统的理论和实践总结。 适用人群:《php+sql成绩查询系统(系统+论文+答辩PPT)》适用于以下人群: 1. 学校教务管理人员:可用于学校的...

    SQL注入攻击与防御(安全技术经典译丛)

    针对SQL注入隐蔽性极强的特点,本书重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,本书还专门从代码层和系统层的角度介绍了避免SQL注入的各种策略和需要考虑的问题。  本书...

Global site tag (gtag.js) - Google Analytics