zoukankan      html  css  js  c++  java
  • sql group by

    group by实例

    实例一

    数据表:

    姓名 科目 分数
    张三 语文 80
    张三 数学 98
    张三 英语 65
    李四 语文 70
    李四 数学 80
    李四 英语 90

    期望查询结果:

    姓名 语文 数学 英语
    张三 80 98 65
    李四 70 80 90

    create table testScore    
    (    
       tid int primary key identity(1,1),    
       tname varchar(30) null,    
       ttype varchar(10) null,    
       tscor int null   
    )    
    go    
    ---插入数据    
    insert into testScore values ('张三','语文',80)    
    insert into testScore values ('张三','数学',98)    
    insert into testScore values ('张三','英语',65)    
    insert into testScore values ('李四','语文',70)    
    insert into testScore values ('李四','数学',80)    
    insert into testScore values ('李四','英语',90)    
    
    
    select tname as '姓名' ,     
    max(case ttype when '语文' then tscor else 0 end) '语文',     
    max(case ttype when '数学' then tscor else 0 end) '数学',     
    max(case ttype when '英语' then tscor else 0 end) '英语'     
    from testScore     
    group by tname

    实例二

    数据表:

    dataStr result

    2016-05-09 胜

    2016-05-09 胜

    2016-05-09 负

    2016-05-10 胜

    2016-05-10 负

    2016-05-10 负

    期望查询结果:

    日期 胜数 负数

    2016-05-09 2 1

    2016-05-10 1 2

    -- ----------------------------
    -- Table structure for `score`
    -- ----------------------------
    DROP TABLE IF EXISTS `score`;
    CREATE TABLE `score` (
      `dataStr` varchar(255) DEFAULT NULL,
      `result` varchar(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of score
    -- ----------------------------
    INSERT INTO `score` VALUES ('2016-05-09', '');
    INSERT INTO `score` VALUES ('2016-05-09', '');
    INSERT INTO `score` VALUES ('2016-05-09', '');
    INSERT INTO `score` VALUES ('2016-05-10', '');
    INSERT INTO `score` VALUES ('2016-05-10', '');
    INSERT INTO `score` VALUES ('2016-05-10', '');
    
    SELECT U.dataStr AS 日期,
    SUM(result='')AS 胜数,
    SUM(result='')AS 负数
    FROM score AS U WHERE 1=1 GROUP BY dataStr

    实例三

    数据表
    国家(country)  人口(population)
    中国 600
    美国 100
    加拿大 100
    英国 200
    法国 300
    日本 250
    德国 200
    墨西哥 50
    印度 250
     期望查询结果:

      人口
    亚洲 1100
    北美洲 250
    其他 700
     
                
    SELECT  SUM(population),
            CASE country
                    WHEN '中国'     THEN '亚洲'
                    WHEN '印度'     THEN '亚洲'
                    WHEN '日本'     THEN '亚洲'
                    WHEN '美国'     THEN '北美洲'
                    WHEN '加拿大'  THEN '北美洲'
                    WHEN '墨西哥'  THEN '北美洲'
            ELSE '其他' END
    FROM    Table_A
    GROUP BY CASE country
                    WHEN '中国'     THEN '亚洲'
                    WHEN '印度'     THEN '亚洲'
                    WHEN '日本'     THEN '亚洲'
                    WHEN '美国'     THEN '北美洲'
                    WHEN '加拿大'  THEN '北美洲'
                    WHEN '墨西哥'  THEN '北美洲'
            ELSE '其他' END;
    
            
     
     
     
  • 相关阅读:
    MYSQL数据库导入数据时出现乱码的解决办法
    Java Web(一) Servlet详解!!
    hibernate(九) 二级缓存和事务级别详讲
    MySQL(五) MySQL中的索引详讲
    LinkedHashMap源码详解
    hibernate(八) Hibernate检索策略(类级别,关联级别,批量检索)详解
    hibernate(七) hibernate中查询方式详解
    MySQL(四) 数据表的插入、更新、删除数据
    MySQL(三) 数据库表的查询操作【重要】
    MySQL(二) 数据库数据类型详解
  • 原文地址:https://www.cnblogs.com/linvan/p/5825239.html
Copyright © 2011-2022 走看看