mysql 一个表自连查询数据?

mysql 一个表自连查询数据?,第1张

建表和视图语句:

DROP TABLE IF EXISTS `tab`

CREATE TABLE `tab`  (

`id` int(11) NOT NULL AUTO_INCREMENT,

`userid` int(11) NULL DEFAULT NULL,

`date` datetime NULL DEFAULT NULL,

`instructions` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

`amount` decimal(18, 2) NULL DEFAULT NULL,

`type` tinyint(1) NULL DEFAULT NULL,

PRIMARY KEY (`id`) USING BTREE

) ENGINE = MyISAM AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic

create view tab_v  as

select

`tab`.`userid` AS `userid`,

date_format( `tab`.`date`, '%Y-%m' ) AS `ym`,

`tab`.`instructions` AS `instructions`,

`tab`.`amount` AS `amount`,

`tab`.`type` AS `type`

from

`tab`

查询语句:

select t0.userid       用户ID,

     t0.ym           年月,

     t1.cnt          本月收入笔数,

     t2.instructions 本月最大收入项目,

     t2.amount       本月最大收入金额,

     t3.instructions 本月最小收入项目,

     t3.amount       本月最小收入金额,

     t4.cnt          本月支出笔数,

     t5.instructions 本月最大支出项目,

     t5.amount       本月最大支出金额,

     t6.instructions 本月最小支出项目,

     t6.amount       本月最小支出金额,

     t7.cnt          本月结余

from (select distinct a.userid,

                      a.ym

        from tab_v a) t0

left join (select a.userid,

                  a.ym,

                  count(1) cnt

             from tab_v a

            where a.type = 2

            group by a.userid,

                     a.ym) t1

  on t0.userid = t1.userid

 and t0.ym = t1.ym

left join (select a.userid,

                  a.ym,

                  a.amount,

                  group_concat(b.instructions) instructions

             from (select a.userid,

                          a.ym,

                          max(a.amount) amount

                     from tab_v a

                    where a.type = 2

                    group by a.userid,

                             a.ym) a,

                  tab_v b

            where a.userid = b.userid

              and a.ym = b.ym

              and a.amount = b.amount

            group by a.userid,

                     a.ym,

                     a.amount) t2

  on t0.userid = t2.userid

 and t0.ym = t2.ym

left join (select a.userid,

                  a.ym,

                  a.amount,

                  group_concat(b.instructions) instructions

             from (select a.userid,

                          a.ym,

                          min(a.amount) amount

                     from tab_v a

                    where a.type = 2

                    group by a.userid,

                             a.ym) a,

                  tab_v b

            where a.userid = b.userid

              and a.ym = b.ym

              and a.amount = b.amount

            group by a.userid,

                     a.ym,

                     a.amount) t3

  on t0.userid = t3.userid

 and t0.ym = t3.ym

left join (select a.userid,

                  a.ym,

                  count(1) cnt

             from tab_v a

            where a.type = 1

            group by a.userid,

                     a.ym) t4

  on t0.userid = t4.userid

 and t0.ym = t4.ym

left join (select a.userid,

                  a.ym,

                  a.amount,

                  group_concat(b.instructions) instructions

             from (select a.userid,

                          a.ym,

                          max(a.amount) amount

                     from tab_v a

                    where a.type = 1

                    group by a.userid,

                             a.ym) a,

                  tab_v b

            where a.userid = b.userid

              and a.ym = b.ym

              and a.amount = b.amount

            group by a.userid,

                     a.ym,

                     a.amount) t5

  on t0.userid = t5.userid

 and t0.ym = t5.ym

left join (select a.userid,

                  a.ym,

                  a.amount,

                  group_concat(b.instructions) instructions

             from (select a.userid,

                          a.ym,

                          min(a.amount) amount

                     from tab_v a

                    where a.type = 1

                    group by a.userid,

                             a.ym) a,

                  tab_v b

            where a.userid = b.userid

              and a.ym = b.ym

              and a.amount = b.amount

            group by a.userid,

                     a.ym,

                     a.amount) t6

  on t0.userid = t6.userid

 and t0.ym = t6.ym

left join (select a.userid,

                  a.ym,

                  sum(case

                        when type = 1 then

                         -1 * a.amount

                        when 2 then

                         a.amount

                      end) cnt

             from tab_v a

            group by a.userid,

                     a.ym) t7

  on t0.userid = t7.userid

 and t0.ym = t7.ym

只能做到这个效果了

一,判断题

1. 在 Linux 的安装过程中可进行网络配置. (对)

2. shell 是一个命令解释器. (对)

3. RedHat Linux 在它的发布版内没有捆绑 MySQL. (对)

4. Samba配置文件修改后,要重新用 testparm测试配置文件,不需要重启 Samba 服务器程序. (错)

5. Linux 不可以与 MS-DOS,OS/2,Windows 等其他 *** 作系统共存于同一台机器上.(错)

6. Linux 中的 ls 命令的功能是变换工作目录到目标指定目录.(错)

7. 通过 rpm –qa|grep vsftpd 命令可以检查系统是否已经安装了 vsftpd.(对)

8. 进入文本编辑器 vi 后,编辑后可文本模式下输入:q 退出 vi 环境.(错)

9. 登录系统的方式有两种:图形化登录和虚拟控制台登录.(对)

10. 可以在 shell 提示下或图形方式创建用户帐号.(对)

二,选择题

1.Samba服务器的主要功能是(C)

(A) Windows 主机间的资源能够共享

(B) 资源管理

(C) 使 Windows 用户以及 Linux 用户能够互相访问彼此的资源

(D) Linux 主机之间实现资源共享

2.在第一次启动时,mysql_install_db 脚本初始化 MySQL系统,这个脚本创建(A)两个数据库.

(A) mysql和 test (B) user 和 test (C) mysql 和 user

26

3.Linux 安装界面上有 3 个选项供用户选择,其中不含( A)

(A) 如果以图形化模式安装或升级 Linux,按 Enter 键.

(B)如果以文本模式安装或升级 Linux,输入:"Linux text",然后按 Ente

(C) 用列出的功能键来获取更多的信息.

(D) Setup 图标.

4 . 命 令 : Create table gb( Guestname char(12) not null, Email char(40), siteurl char(80))

中的作用为( C)

(A) 建立一个数据库名为 gb ,其字段名为 char char char text

(B) 建立一个数据库表,表名为 gb ,其字段名为 char char char text

(C) 建立一个数据库表,表名为 gb ,其字段名为 Guestname, Email,siteu

5.clear 命令的作用( A)

(A)清除终端窗口 (B)关闭终端窗口

(C)打开终端窗口 (D)调整窗口大小

6.使用命令 chmod 的数字设置,可以改变 ( C)

(A)文件的访问特权 (B)目录的访问特权 (C)文件/目录的访问特权

7. 在 shell 提示符下[root@redhat9 root]#/testparm 命令,可用于测试(B)

(A) smb.conf的正确性 (B) webapp.conf 的正确性

(C) vsftpd.conf 的正确性 (D) dhcpd.conf 的正确性

8.在提示符[root@redhat9 root]#从 root 帐号转为普通用户帐号使用(D )命令.

(A) su (B) us (C) su 用户名 (D) us 用户名

9.客户端访问 FTP 服务器的方法不含( D)

(A) text 访问 (B) 客户端 FTP 软件访问 (C) C/S访问 (D)浏览器访问

10.在 FTP 主配置文件 vsftpd.conf 中,每个选项设置为一行,格式为(B )

(A) "选项 =值" (B) "选项=值" (C) "选项 = 值" (D) "选项= 值"

可以将试卷内容构造成一个xml文件,或者是文本文件格式当然是固定的最好,然后进行解析放到自己事先构造好的model里,然后将这个model构造出sql语句,写入即可。

至于模版嘛,可以到网上搜一些相关的在线考试系统,然后模拟做一个就行啦~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7436669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存