-
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 ...
GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...
在MySQL中,当我们需要从分组后的数据中获取每组的第一条或特定顺序的数据时,标准的`GROUP BY`和`ORDER BY`语句并不能直接实现这个需求。这是因为`GROUP BY`语句会先对数据进行分组,然后在每个组内应用`ORDER BY`...
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数据库中,有时我们需要对数据进行分组处理,并从每个分组中随机选取一条记录。这在统计分析或者抽样调查等场景中非常常见。本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。...
标题“MySQL 查询重复内容只显示一条”涉及到的是在MySQL数据库中如何处理重复数据的问题。在数据分析或数据存储过程中,有时我们需要找出并处理重复的记录,只保留一条作为代表。这通常可以通过聚合函数和分组来...
在MySQL中实现分组并获取每组中的特定数量的最大记录是一项常见的需求,尤其是在处理大量数据时。例如,在上述示例中,我们希望基于`resid`进行分组,并且对于每个组,我们要找出前两条具有最高`pscore`和次高的`...
MySQL中的分组查询是SQL语言中的一个重要组成部分,它允许我们对数据进行聚合操作,以便根据一个或多个列的值对结果进行分类。这种查询方法在处理大量数据时尤其有用,可以用于统计、分析和总结数据。下面我们将深入...
MySQL 分组函数与分组查询 MySQL 中的分组函数和分组查询是数据分析和处理的重要工具,能够帮助用户快速对数据进行聚合、筛选和分析。在本节中,我们将详细介绍 MySQL 中的分组函数和分组查询,包括 SUM、AVG、MAX...
- 使用子查询`b`来统计`t1`表中满足条件的每一组`列1`的数量以及对应的`列2`和`列3`的值。 - 使用`UNION`操作符将子查询`b`的结果与另一个统计查询合并。 - 最后一个查询计算`t2`表中`列1`的数量,并将结果与其他...
在分组之后,可以对每个分组执行聚合函数,如`COUNT()`、`SUM()`、`AVG()`、`MAX()`和`MIN()`等,以便计算每组的数据统计信息。 #### 常用的聚合函数 - **COUNT()**: 统计每个分组中符合条件的记录数量。 - **SUM...
分组后可以对每个组执行聚合操作。MySQL使用`GROUP BY`子句来实现这一功能。 - **基本用法**: - `SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name;` - 示例:假设...
首先,MySQL提供了一个特殊的标志`SQL_CALC_FOUND_ROWS`,这个标志可以在查询时计算总的行数,而不仅仅是分组后的行数。使用`SQL_CALC_FOUND_ROWS`时,你需要在查询的开始部分加上这个标志,然后执行查询,再单独...
首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@rowno := @rowno + 1) as rank, score, (C.end_ti
比如,统计每个部门的员工人数,可以先按部门分组,再用 COUNT 函数计算每组的数量,这样部门就变成了列,员工人数变成了行对应的值。 在提供的 A.sql 和 B.sql 文件中,可能包含了实际的 SQL 查询示例,这些示例...
它们允许我们对数据进行逻辑分组,并对每个组应用特定的计算,从而获取更高级别的统计数据。 分组查询通常由`GROUP BY`语句实现,其基本语法如下: ```sql SELECT column1, aggregate_function(column2), ... FROM...
MySQL中的分组查询和连接查询是数据库操作中的关键部分,它们允许用户对数据进行复杂的分析和汇总。在本文中,我们将深入探讨这两种查询方法以及相关的统计函数。 分组查询是通过`GROUP BY`语句来实现的,它可以将...