一道比较实用的MySQL面试题:游戏数据充值查询

题目如下,

有两个数据表分表是,

用户表: Members(qqnumber,userid);

充值表:   Payment(payid,userid,paytime,amount);

查询2012年各个月充值最多的用户的qqnumber,要求根据qqnumber进行汇总(提示:一个qqnumber可能会有多条充值记录;paytime为充值时间,amount为充值金额),请写出SQL语句 。

首先创建两个表:

然后创建存储过程,往数据表里面插入测试数据:

方法一:

SELECT MAX( amount ) , t.qqnumber, t.MONTH  FROM (

SELECT MONTH( a.paytime ) MONTH , b.qqnumber, SUM( a.amount ) amount  FROM payment a, members b
WHERE a.userid = b.userid  AND YEAR( a.paytime ) = ‘2012‘ GROUP BY b.qqnumber, MONTH

) AS t  GROUP BY t.MONTH;

方法二:

SELECT MAX( amount ) , t.qqnumber, t.month FROM (

SELECT MONTH( p.paytime ) AS MONTH , SUM( p.amount ) AS amount, m.qqnumber AS qqnumber
FROM Members m JOIN Payment p ON m.userid = p.userid
WHERE YEAR( p.paytime ) =2012 GROUP BY m.qqnumber, MONTH

) AS t GROUP BY t.month;

最后查询到的结果如下:

本文为作者原创,转载请注明出处,不对之处欢迎指正,请留言!

时间: 2024-11-06 19:43:18

一道比较实用的MySQL面试题:游戏数据充值查询的相关文章

基于内存,redis,mysql的高速游戏数据服务器设计架构

转载请注明出处,欢迎大家批评指正 1.数据服务器详细设计 数据服务器在设计上采用三个层次的数据同步,实现玩家数据的高速获取和修改. 数据层次上分为:内存数据,redis数据,mysql数据 设计目的:首先保证数据的可靠,防止数据丢失,保证数据完整.然后实现数据的高速访问,减少由玩家数量增加对数据服务器性能造成的影响.最后实现运维数据的入库,以及数据持久化. 在这个基础上数据服务器不再是一个单一服务器,它涉及到与其他服务器之间的交互. 数据服务器的核心在于redis数据层面.通过redis加快玩家

针对MySQL提高百万条数据的查询速度优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:   select id from t where num is null   可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:   select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,

mysql学习笔记——对数据记录查询操作的补充(单表内查询)

select ... from ... where ... group by ... having ... order by ... limit...; (顺序固定) 1.select 指定所要检索的字段(列) select 后加distinct关键字,则可去除重复的记录,其中,重复的记录是指 所有字段值都相同的记录 2.from 指定查询数据表,可以是表名,也可以是别名 通常是在一个表达式不易读取时,对其取别名: 表达式 as 别名; 3.where 前置过滤条件 --- 将表数据过滤掉一部分

Mysql的学习4____数据的查询

DQL(Data Query Language):数据库查询语言 1.进行简单的单表查询,复杂的多表查询,嵌套查询: /* SELECT [ALL | DISTINCT] {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]} FROM table_name [as table_alias] [left | right | inner join table_name2] #联合查询 [WHERE ...]

MySql 笔试题

------前两天刚做了一套Mysql笔试题,分享给大家------------------ 第一部分.单选题(共40分) 1.mysql中唯一索引的关键字是( C  ) A. fulltext index  B.only  index   C.unique index D.index 2.下面关于索引描述中错误的一项是( C   ) A.索引可以提高数据查询的速度 B.索引可以降低数据的插入速度 C.innodb存储引擎支持全文索引 D.删除索引的命令是drop index 3.支持主外键,索

乐视mysql面试题

http://blog.itpub.net/28916011/viewspace-2093197/ 最近,朋友去乐视面试了mysql DBA,以下是我据整理的乐视mysql面试题答案,供大家参考 1. MYISAM和INNODB的不同?答:主要有以下几点区别:   a)构造上的区别     MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义:.MYD (MYData)为数据文件:.MYI (MYIndex)为索引文件.     而innodb是由.frm文件.表空间(分为独立表空间或

乐视mysql面试题【转】

最近,朋友去乐视面试了mysql DBA,以下是我据整理的乐视mysql面试题答案,供大家参考 1. MYISAM和INNODB的不同?答:主要有以下几点区别:   a)构造上的区别     MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义:.MYD (MYData)为数据文件:.MYI (MYIndex)为索引文件.     而innodb是由.frm文件.表空间(分为独立表空间或者共享表空间)和日志文件(redo log)组成.    b)事务上的区别      myisam不

javascript基础修炼——一道十面埋伏的原型链面试题

javascript基础修炼--一道十面埋伏的原型链面试题 在基础面前,一切技巧都是浮云. 题目是这样的 要求写出控制台的输出. function Parent() { this.a = 1; this.b = [1, 2, this.a]; this.c = { demo: 5 }; this.show = function () { console.log(this.a , this.b , this.c.demo ); } } function Child() { this.a = 2;

BAT五十五道 MySQL面试题总结!

1.一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ? 2.Mysql的技术特点是什么? Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器.不同的后端.广泛的应用程序编程接口和管理工具. 3.Heap表是什么? HEAP表存在于内存中,用于临时高速存储. BLOB或TEXT字段是不允许的 只能使用比较运算符=,<,>,=>