求教:count及group by应用

badrboy 2010-06-29 10:57:20
初次用数据库,只是简单建个表应用,建了一个表,并导入数据,现在想查询一段时间内出现次数大于某个数值的个数
create table gupiao(
date_id varchar2(12),
code number(6),
name varchar2(20),
hangye varchar2(80),
hangye_s varchar2(40),
district varchar2(20),
times number(4),
price number(12,2),
chengjiao number(12,2),
chengjiao_avg number(12,2),
scale number(8,2))

插入的数据是:
2010-6-28 521 美菱电器 电器机械及器材制造业 家庭用品 安徽 1 10.2 101.96 101.96 3.84
2010-6-28 2221 东华能源 批发和零售贸易 石油与天然气生产 江苏 1 10.17 116.63 116.63 3.65
2010-6-28 2221 东华能源 批发和零售贸易 石油与天然气生产 江苏 1 10.17 116.63 116.63 3.68


现在若想2221出现两次,选择想用count(code)>1实现,并最终实现分组,如何处理?建表时没有涉及参数,望帮忙,谢谢!

SQL> select code,name,date_id from gupiao group by code;
select code,name,date_id from gupiao group by code
*
ERROR 位于第 1 行:
ORA-00979: 不是 GROUP BY 表达式

SQL> select code,name,date_id from gupiao where count(code)>3;
select code,name,date_id from gupiao where count(code)>3
*
ERROR 位于第 1 行:
ORA-00934: 此处不允许使用分组函数
...全文
1073 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
badrboy 2010-06-30
  • 打赏
  • 举报
回复
问题解决,虽然不太明白原理,但谢谢5楼,6楼给的解决方案!也感谢其他朋友。
那些原始数据我在我的资料里上传了个dmp文件,有玩股票的可以看一下,只是下载时,会扣1分,呵呵。

结贴!;)
xiaohu8855 2010-06-30
  • 打赏
  • 举报
回复
select code, name, date_id
from gupiao g1
where exists
(
select 1
from gupiao g2 where g1.code=g2.code
group by g2.code
having count(g2.code) > 3
);
kyle7788 2010-06-30
  • 打赏
  • 举报
回复

select code, name, date_id
from gupiao
where code in
(
select code
from gupiao
group by code
having count(code) > 3
);


半世码农 2010-06-30
  • 打赏
  • 举报
回复
你可以看下不加count(code)>1这个条件时,会出现什么样记录,分析下,是不是你数据库里的数据就没符合的[Quote=引用 2 楼 badrboy 的回复:]

二楼语句查询无结果,是不是建表时应该指定一些参数?
SQL> select count(*) from gupiao;

COUNT(*)
----------
1604

select code from gupiao group by code;
601678
601877

CODE
----------
60……
[/Quote]
reality123456 2010-06-30
  • 打赏
  • 举报
回复
这个分组 统计 只能查询分组列 和统计结果 像你所说的 就只能查询 code 和count() 还要查询name的话 就出现语法错误了 如果要查询 就作为分组条件 这里当然要看你需要了 要不是就得想其他办法
badrboy 2010-06-29
  • 打赏
  • 举报
回复
二楼语句查询无结果,是不是建表时应该指定一些参数?
SQL> select count(*) from gupiao;

COUNT(*)
----------
1604

select code from gupiao group by code;
601678
601877

CODE
----------
601888

已选择540行。

SQL> select code,name,date_id,count(code) from gupiao group by code,name,date_id
having count(code)>1;

未选定行
liukang1022 2010-06-29
  • 打赏
  • 举报
回复
select code,name,date_id,count(code) from gupiao group by code,name,date_id having count(code)>3;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧