`
y1d2y3xyz
  • 浏览: 257186 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL整理二

    博客分类:
  • SQL
SQL 
阅读更多
显示下表年度为季度,算出总计
表income
+----+------+---------+-----------+
| id | year | quarter | amount    |
+----+------+---------+-----------+
|  1 | 2004 |       1 |   2328.00 | 
|  2 | 2004 |       2 |   3822.00 | 
|  3 | 2004 |       3 |   7071.00 | 
|  4 | 2004 |       4 |   8931.00 | 
|  5 | 2005 |       1 |   2633.00 | 
|  6 | 2005 |       2 |   3910.00 | 
|  7 | 2005 |       3 | 237193.00 | 
|  8 | 2005 |       4 | 567444.00 | 
|  9 | 2006 |       1 |  12313.00 | 
+----+------+---------+-----------+
结果:
+------+----------+---------+-----------+-----------+----------+
| year | 1d       | 2d      | 3d        | 4d        |  SUM     |
+------+----------+---------+-----------+-----------+----------|
| 2004 |  2328.00 | 3822.00 |   7071.00 |   8931.00 | 22152.00 |
| 2005 |  2633.00 | 3910.00 | 237193.00 | 567444.00 | 811180.00|
| 2006 | 12313.00 |    NULL |      NULL |      NULL | 12313.00 |
+------+----------+---------+-----------+-----------+----------+
SQL:
+-------------------------------------------------------------+
CREATE TABLE IF NOT EXISTS `income` (
  `id` int(11) NOT NULL auto_increment,
  `year` varchar(4) default NULL,
  `quarter` int(2) default NULL,
  `amount` decimal(15,2) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gbk AUTO_INCREMENT=10 ;

INSERT INTO `income` VALUES (1, '2004', 1, 2328.00);
INSERT INTO `income` VALUES (2, '2004', 2, 3822.00);
INSERT INTO `income` VALUES (3, '2004', 3, 7071.00);
INSERT INTO `income` VALUES (4, '2004', 4, 8931.00);
INSERT INTO `income` VALUES (5, '2005', 1, 2633.00);
INSERT INTO `income` VALUES (6, '2005', 2, 3910.00);
INSERT INTO `income` VALUES (7, '2005', 3, 237193.00);
INSERT INTO `income` VALUES (8, '2005', 4, 567444.00);
INSERT INTO `income` VALUES (9, '2006', 1, 12313.00);
+-------------------------------------------------------------+
问题:通过income表数据生成结果表信息
方法一:
+-------------------------------------------------------------------------+
|select  a.year,1d,2d,3d,4d,sum from (select distinct year from income) a | 
|left join                                                                |
|(select year,amount as 1d,id from income where quarter=1 group by year)d1| 
|on a.year=d1.year                                                        |
|left join 
|(select year,amount as 2d,id from income where quarter=2 group by year)d2| 
|on a.year=d2.year                                                        |
|left join                                                                | 
|(select year,amount as 3d,id from income where quarter=3 group by year)d3| 
|on a.year=d3.year                                                        |
|left join                                                                | 
|(select year,amount as 4d,id from income where quarter=4 group by year)d4| 
|on a.year=d4.year                                                        |
|left join                                                                | 
|(select year,sum(amount) as sum,id from income  group by year)s          | 
|on a.year=s.year                                                         |
+-------------------------------------------------------------------------+
方法二:
+-------------------------------------------------------+
|select year,                                           |
|sum(case when quarter=1 then amount else 0 end) 1d,    | 
|sum(case when quarter=2 then amount else null end) 2d, |
|sum(case when quarter=3 then amount else null end) 3d, |
|sum(case when quarter=4 then amount else null end) 4d, |
|sum(amount) sum                                        |
|from income group by year;                             |
+-------------------------------------------------------+

分享到:
评论

相关推荐

    sql语句整理工具

    2. BreakSqlUI.exe:这可能是工具的图形用户界面(GUI)版本,允许用户通过直观的界面来输入或导入SQL语句,然后进行格式化操作。 3. BreakSqlCmd.exe:这个可能是命令行版本的工具,适合那些喜欢通过命令行工作或者...

    SQL语句格式整理器

    SQL语句格式整理器是一款非常实用的工具,它专门针对SQL查询语句的排版混乱问题,通过自动化处理,帮助用户快速将杂乱无章的SQL代码转化为整洁、易读的格式。这样的工具在数据库管理和开发过程中尤为重要,因为它...

    sql跟踪语句整理工具

    SQL跟踪后,用该工具能够快速整理出整洁的SQL,减少人工的复制、帖贴

    oracle常用sql整理

    本文将基于"oracle常用sql整理"的主题,深入探讨Oracle SQL的一些核心概念、语句及其实用技巧,适合初级到中级水平的学习者。 一、SQL基础 SQL是标准化的查询语言,分为DDL(Data Definition Language)、DML(Data...

    SQL格式化整理

    SQL格式整理工具,而且还可以把SQL语句转换成VB DELPHI C# JAVA里面用的格式

    SQL文自动整理格式工具

    sqllice是一款专为解决SQL代码格式混乱问题而设计的工具,它能够帮助开发人员快速、高效地整理SQL脚本,使其更符合编程规范,提高代码可读性和团队协作效率。无论你是使用Java、Python、C#还是其他语言进行开发,...

    自制sql文整理

    自制SQL文整理,非开源,非完整,写得很挫,有使用时限,强烈不建议下载

    SQL数据库整理工具

    标题中的“SQL数据库整理工具”指的是专门用于管理和优化SQL Server数据库的应用程序,这些工具通常包含一系列功能,旨在提升数据库性能,确保数据的准确性和一致性。SQL Server是Microsoft开发的一款关系型数据库...

    《SQL》语句整理

    在《SQL》语句整理中,我们涉及了数据库的创建与删除、表的创建与数据操作、查询语句以及聚合函数等核心概念。 首先,创建数据库是数据库管理的基础。在SQL Server 2005中,可以使用`CREATE DATABASE`语句来创建新...

    sql语句整理

    sql语句整理 sql增删改查 更新数据记录 删除数据记录

    SQL面试经典版-整理篇

    2. Oracle数据库: - PL/SQL:Oracle的存储过程、函数、触发器和游标。 - 分区表:提高大数据量表的查询效率,如范围分区、列表分区、哈希分区等。 - Materialized Views:物化视图用于快速查询和数据刷新。 - ...

    刚刚整理的SQL语句

    尽管描述和部分内容提供的信息有限,但我们可以基于标题“刚刚整理的SQL语句”来展开一些重要的SQL知识点,帮助读者更好地理解和掌握SQL的基础及进阶用法。 ### SQL简介 SQL(Structured Query Language)是一种...

    DBA日常维护SQL整理

    DBA日常维护SQL整理,涵盖操作系统、存储、数据库各个层面

    sql跟踪语句整理工具2

    标题中的“sql跟踪语句整理工具2”表明这是一个专门用于SQL语句跟踪和管理的软件工具,可能是针对数据库开发人员或管理员设计的。这类工具通常能够帮助用户收集、分析和整理在数据库操作过程中产生的SQL语句,以优化...

    Sql数据库知识整理

    这个压缩包“SQL整理”很可能包含了关于SQL的各种概念、语法、操作和最佳实践的详细资料。以下是一些可能涵盖在其中的重要知识点: 1. **SQL基本概念**:SQL分为DDL(Data Definition Language,数据定义语言)、...

    一般SQL语句优化整理

    ### 一般SQL语句优化整理 #### 概述 在数据库操作中,SQL查询语句是数据检索的核心,其性能直接影响到应用系统的响应时间和资源消耗。对于一般的SQL语句优化,不仅能够提升查询效率,还能改善用户体验。本文将对...

    SQL Server 2005索引碎片整理

    SQL Server 2005索引碎片整理

    经典SQL语句整理大全

    SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。以下是对标题和描述中涉及的经典SQL语句的详细解释: 1. **创建数据库**: 使用`CREATE DATABASE`语句来创建一个新的数据库。例如:`...

    SQL Server面试常用sql整理

    SQL Server 面试常用 SQL 整理 在 SQL Server 面试中,数据库部分的知识是非常重要的,本文将整理一些常用的 SQL 查询语句,以便更好地应对面试。 数据库设计 在创建数据库时,需要考虑到数据库的设计,包括表...

Global site tag (gtag.js) - Google Analytics