-
mysql, 如何查询分组后 每组的总条数10
现在有这样的需求: 根据某一个条件进行分组统计,显示分组后每组的总条数。
数据表:
物品表(wuPin) :id,name,types,units (自增,物品名称,物品类型,管理单位)
案件表(anJian) :id,name,types,units (自增,案件名称,案件类型,管理单位)查询条件:根据“管理单位”统计其下有多少贵重物品、危险物品、刑事案件、治安案件。
最后要的结果如下:
请问高手们,sql 怎么写??????
以上表格都是我直接在数据新建的,方便大家看,实际不是这些表,也更多。
2012年8月14日 10:15
5个答案 按时间排序 按投票排序
-
采纳的答案
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
-
典型的纵表转化成横表,只写了第一个表,第二个表类似,然后把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
-
统计需要行列转换,写了个比较粗糙的,你可以再简化下,功能肯定是实现了:
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.units2012年8月14日 14:12
相关推荐
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: 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取分组后的每组第一条数据 gruop by 分组后 进行 order by 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...
思路:先随机排序然后再分组就好了。 1、创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `class` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=...
GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...
首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...
这个时候就要用到分组查询,分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同年龄段购买化妆品的人员也是组),并对每个组进行聚合计算的过程:。 分组查询的语法格式如下: select ...
您可能感兴趣的文章:分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用...
本文给大家分享的是使用mysql实现获取所有分类的前N条记录的方法,本文给出了3个示例,有需要的小伙伴可以参考下。
Ø 常用查询 MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 drop database dbName; 3、 创建数据库 create database [if not exists] dbName; 中括号部分可选的,判断该数据不存在...
主要介绍了mysql 获取某个时间段每一天、每一个小时的统计数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
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 ...
此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序: mysql> exit Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...
此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序: mysql> exit Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...
3.10.2 对数组的每一个元素应用任何函数:array_walk() 3.10.3 统计数组元素个数:count()、sizeof()和array_count_values() 3.10.4 将数组转换成标量变量:extract() 3.11 进一步学习 3.12 下一章 第4章 字符...