0 0

mysql, 如何查询分组后 每组的总条数10

现在有这样的需求: 根据某一个条件进行分组统计,显示分组后每组的总条数。


数据表:
物品表(wuPin)  :id,name,types,units   (自增,物品名称,物品类型,管理单位)


 

案件表(anJian) :id,name,types,units   (自增,案件名称,案件类型,管理单位)

 

 

查询条件:根据“管理单位”统计其下有多少贵重物品、危险物品、刑事案件、治安案件。

最后要的结果如下:




 

 

请问高手们,sql 怎么写??????

 

以上表格都是我直接在数据新建的,方便大家看,实际不是这些表,也更多。
 

2012年8月14日 10:15
  • 大小: 20.5 KB
  • 大小: 23.7 KB
  • 大小: 9.5 KB

5个答案 按时间排序 按投票排序

0 0

采纳的答案

SELECT sum(DECODE(a.types,'贵重物品',1,0)) AS 贵重物品,
       sum(DECODE(a.types,'危险物品',1,0)) AS 危险物品,
       sum(DECODE(a.types,'刑事案件',1,0)) AS 刑事案件,
       sum(DECODE(a.types,'治安案件',1,0)) AS 治安案件,
       a.units AS 管理单位
FROM  (SELECT * FROM  anJian  UNION ALL SELECT * FROM  wupin) a
GROUP BY units ;测试了一下跟你要的结果是一样的,用了decode函数,应该还有其他方法,这个可以参考哈。

2012年8月14日 14:27
0 0

典型的纵表转化成横表,只写了第一个表,第二个表类似,然后把2各表连接下就行了
sql仅供参考
select
    m.危险物品, n.贵重物品, m.治安单位
from
    (select
        b.name as '危险物品', b.units as '治安单位'
    from
        (select
        count(w.name) as name, w.types, w.units
    from
        wupin w
    group by w.units , w.types
    having w.types = '危险物品') b) m
        left join
    (select
        c.name as '贵重物品', c.units as '治安单位'
    from
        (select
        count(w.name) as name, w.types, w.units
    from
        wupin w
    group by w.units , w.types
    having w.types = '贵重物品') c) n ON m.治安单位 = n.治安单位

2012年8月14日 14:34
0 0

统计需要行列转换,写了个比较粗糙的,你可以再简化下,功能肯定是实现了:
select a.贵重物品,a.危险物品,b.刑事案件,b.治安案件,b.units as 管理单位 from (
select
sum(decode(temp1.types,'贵重物品',temp1.c,0))贵重物品,
sum(decode(temp1.types,'危险物品',temp1.c,0))危险物品,
temp1.units
from (select count(0)c,types,units from wuPin a group by a.types,a.units)temp1
group by temp1.units
)a,
(
select
sum(decode(temp2.types,'刑事案件',temp2.c,0))刑事案件,
sum(decode(temp2.types,'治安案件',temp2.c,0))治安案件,
temp2.units
from (select count(0)c,types,units from anJian a group by a.types,a.units)temp2
group by temp2.units)b
where a.units=b.units

2012年8月14日 14:12
0 0

select count(*) from wuPin group by types

2012年8月14日 13:54
0 0

count(*) where types=?

2012年8月14日 11:10

相关推荐

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

    Mysql取分组后的每组第一条数据

    Mysql取分组后的每组第一条数据 gruop by 分组后 进行 order by mysql会按照 先分组后排序的形式进行输出 并不能做到每组中的第一条数据取出。 我的思路是 : 先将要查询的数据表转换成已经排序的临时表 在进行 分组...

    mysql获取分组后每组的最大值实例详解

    mysql获取分组后每组的最大值实例详解 1. 测试数据库表如下: create table test ( `id` int not null auto_increment, `name` varchar(20) not null default '', `score` int not null default 0, primary key...

    MySql分组后随机获取每组一条数据的操作

    思路:先随机排序然后再分组就好了。 1、创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `class` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=...

    mysql使用GROUP BY分组实现取前N条记录的方法

    GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...

    Mysql利用group by分组排序

    首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...

    MySQL 分组查询和聚合函数

    这个时候就要用到分组查询,分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同年龄段购买化妆品的人员也是组),并对每个组进行聚合计算的过程:。 分组查询的语法格式如下: select ...

    SQL SERVER 分组求和sql语句

    您可能感兴趣的文章:分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用...

    MySQL获取所有分类的前N条记录

    本文给大家分享的是使用mysql实现获取所有分类的前N条记录的方法,本文给出了3个示例,有需要的小伙伴可以参考下。

    mysql数据库的基本操作语法

    Ø 常用查询 MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 drop database dbName; 3、 创建数据库 create database [if not exists] dbName; 中括号部分可选的,判断该数据不存在...

    详解mysql 获取某个时间段每一天、每一个小时的统计数据

    主要介绍了mysql 获取某个时间段每一天、每一个小时的统计数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    详解MySQL分组排序求Top N

    MySQL分组排序求Top N 表结构   按照grp分组,按照num排序,每组取Top 3,输出结果如下:     源代码: SELECT * FROM score AS t3 WHERE ( SELECT COUNT(*) FROM score AS t1 LEFT JOIN score AS t2 ON ...

    MySQL命令大全

     此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:  mysql> exit  Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...

    MYSQL常用命令大全

     此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:  mysql> exit  Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...

    PHP和MySQL Web开发第4版pdf以及源码

    3.10.2 对数组的每一个元素应用任何函数:array_walk() 3.10.3 统计数组元素个数:count()、sizeof()和array_count_values() 3.10.4 将数组转换成标量变量:extract() 3.11 进一步学习 3.12 下一章 第4章 字符...

Global site tag (gtag.js) - Google Analytics