`
ealpha
  • 浏览: 101169 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

常见的统计需求,MYSQL 下 SQL语句如何来完成?

阅读更多

有一张表table1 结构如下.

table1:

username    action  
--------------------------------
A                   CALL      
A                   SEARCH
A                   SEARCH
B                   CALL     
B                   SEARCH
A                   SEARCH
A                   VIDEO
B                   SEARCH
B                   VIDEO
A                   CALL 
B                   VIDEO
--------------------------------

通过一条SQL语句得出下列统计数据:

table2

username   CALL_TIMES       SEARCH_TIMES      VIDEO_TIMES
-------------------------------------------------------------------------------
A                     2                        3                              1
B                     1                        2                              2
-------------------------------------------------------------------------------

说明:

table.action 中所有可能的值都已知的,只有 CALL , SEARCH ,VIDEO 和 table2 的字段一一对应

table1 中目前数据50W条。

有没有效率较高的SQL语句?

 

分享到:
评论
3 楼 LucasLee 2008-04-11  
不错,我也学了一招。
2 楼 ealpha 2008-04-10  
<p>我自己做完成了</p>
<p> </p>
<p>MYSQL 语句: </p>
<pre name='code' class='sql'><br/>select 
<br/> t.username,
<br/> max(CASE T.action WHEN 'CALL' THEN T.NN ELSE 0 end) as CALL_TIMES,
<br/> max(CASE T.action WHEN 'SEARCH' THEN T.NN ELSE 0 end) as SEARCH_TIMES,
<br/> max(CASE T.action WHEN 'VIDEO' THEN T.NN ELSE 0 end) as VIDEO_TIMES
<br/>
<br/>from 
<br/> (select temp.username,temp.action,count(*) as NN 
<br/>  from temp
<br/>  group by temp.username,temp.action) as T
<br/>
<br/>group by T.username
<br/>
<br/>
<br/>
<br/><br/></pre>
<p> 对应的 Oracle 语句:</p>
<p> </p>
<pre name='code' class='sql'>select username,
<br/> max(decode(action,'CALL',NN,0)) AS CALL_TIMES ,
<br/> max(decode(action,'VIDEO',NN,0)) AS VIDEO_TIMES ,
<br/> max(decode(action,'SEARCH',NN,0)) AS VIDEO_TIMES
<br/>from
<br/> (select username,action,count(*) AS NN from table1
<br/> group by username,action)
<br/>
<br/>group by username
<br/></pre>
<p> </p>
1 楼 LucasLee 2008-04-10  
这明显是一个交叉报表,就是说行头和列头都是动态从结果集里取得的。
应该先用一个简单的group by获得结果,再用报表工具,或者自己编程转换成最终结果。
语句为:select username,action,count(*) from table1 group by username,action
结果集为,例如:
username action count(*)
A        CALL   2
A        SEARCH 4
B        CALL   3
B        SEARCH 5

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    本项目提供了一个Java源码工具,能够帮助用户便捷地将Oracle SQL语句转换为MySQL SQL语句。 Oracle SQL与MySQL SQL的主要差异在于以下几个方面: 1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在...

    Effective MySQL之SQL语句最优化.pdf

    最优化的SQL语句能够在最小的资源消耗下,完成特定的数据库操作,并且保证响应速度和数据处理效率。 2. MySQL数据库简介:MySQL是一个开放源代码的关系型数据库管理系统,广泛应用于Web应用中。它使用结构化查询...

    Effective MySQL之SQL语句最优化(高清)

    《Effective MySQL之SQL语句最优化》提供了很多可以用于改进数据库和应用程序性能的最佳实践技巧,并对这些技巧做了详细的解释。《Effective MySQL之SQL语句最优化》希望能够通过一步步详细介绍SQL优化的方法,帮助...

    Mysql常用SQL语句

    MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` *...

    介绍六个有用的MySQL的SQL语句

    MySQL SQL 语句实践指南 MySQL 是一种广泛使用的关系数据库管理系统,SQL 语句是其核心组成部分。今天,我们将介绍六个有用的 MySQL SQL 语句,帮助您更好地使用 MySQL 数据库。 1. 计算年数 计算年数是日常生活...

    MySQL SQL语句练习题及答案

    MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...

    Mysql运行SQL语句中文乱码问题的解决方法

    ### MySQL运行SQL语句中文乱码问题的解决方法 在MySQL数据库中运行包含中文字符的SQL语句时,经常会遇到中文显示为乱码的问题。这一现象不仅降低了开发效率,还可能导致数据错误。本文将详细介绍如何彻底解决MySQL...

    《Effective MySQL之SQL语句最优化》手册

    《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一系列实用且高效的策略。在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时...

    《Effective MySQL之SQL语句最优化》数据库SQL

    《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能,特别是针对SQL查询进行优化的专业书籍。在数据库管理中,SQL语句的优化是至关重要的,它直接影响到系统的响应速度和整体效率。本篇文章将依据...

    mysql转化成sql server sql转化成mysql工具

    2. 转换规则应用:根据SQL Server的语法特性,工具会将MySQL的SQL语句转化为相应的SQL Server语法。 3. 数据导出:将MySQL中的数据导出为SQL脚本,或者直接导入到SQL Server中。 4. 验证与调整:迁移后,需要验证...

    mysql sql常用语句大全

    mysql sql常用语句大全

    PB 从SQL语句获取数据存储(MySQL)

    标题 "PB 从SQL语句获取数据存储(MySQL)" 指的是使用PowerBuilder (PB) 开发工具,通过SQL语句从MySQL数据库中检索和处理数据存储的过程。在这个Demo中,PB11.5 版本被用作开发环境,而MySQL作为后台数据库系统。...

    MySQL常用sql语句生成器

    下面将详细介绍MySQL中的SQL语句及其生成器的相关知识。 1. SQL基础概念 SQL,全称为结构化查询语言,是用于创建、查询、更新和删除数据库中数据的标准语言。它分为DQL(查询语言)、DML(数据操纵语言)、DDL...

    Python使用sql语句对mysql数据库多条件模糊查询.pdf

    Python 使用 SQL 语句对 MySQL 数据库多条件模糊查询 Python 是一种广泛使用的编程语言,而 MySQL 是一种常用的关系型数据库管理系统。在实际应用中,我们经常需要使用 Python 连接 MySQL 数据库,并执行多条件...

    32丨MySQL调优之SQL语句:如何写出高性能SQL语句?.html

    32丨MySQL调优之SQL语句:如何写出高性能SQL语句?.html

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    MySQL SQL查询语句大全集锦(经典珍藏)

    本知识点集锦将全面介绍MySQL中的SQL查询语句,包括基础操作、数据管理和安全性设置等方面。 基础操作是数据库管理的基础,包括创建和选择数据库、表的操作。创建数据库的语句是`CREATE DATABASE 数据库名;`。例如...

    java操作mysql数据库,不写sql语句版

    在Java编程中,与MySQL数据库交互通常涉及到使用SQL语句来执行CRUD(创建、读取、更新、删除)操作。然而,为了提高代码的可维护性和安全性,开发者可以选择使用ORM(对象关系映射)框架,如Hibernate或MyBatis,...

    MySQL自动生成数据字典SQL语句

    自己写的两个SQL语句生成对应数据库的数据字典,一个生成表集合,一个生成字段集合 只需修改where语句后面的TABLE_SCHEMA的数据库名即可

Global site tag (gtag.js) - Google Analytics