当前位置:数据库 > Oracle >>

oracle 分组查询问题:

create table ZHXQ_NEWS_ARTICLE ( ID NUMBER(10) not null, MODULE_ID NUMBER(6) default 101 not null,--模块ID TITLE VARCHAR2(60) not null, AUTHOR VARCHAR2(10) default '小区' not null, CONTENT CLOB, ORIGIN VARCHAR2(20), DATE_TIME VARCHAR2(20) ) 现在想按MODULE_ID 进行分组查询并按DATE_TIME 排序,最后取每类(MODULE_ID)的前10条数据 请问SQL怎么写?
追问:你好的个SQL可以查询但是性能 不是很好反应很慢 (oracle10G),有没有改进的方法?此法不通 谢谢 ,“乡间的老牛”那种可以这个SQL可以查出 结果但是查出的所有的  怎么改?这里只能上传一张图片我把两张合成一张了,问题如题。。
答案:用 Oracle 的分析函数处理一下, 很简单.

SELECT
  日期, 数量,
  SUM(  数量 ) OVER(ORDER BY 日期 ROWS UNBOUNDED PRECEDING) AS "依次累计"
FROM
其他:SELECT *
FROM  (SELECT MODULE_ID, 
                            ROW_NUMBER() OVER(PARTITION BY MODULE_ID ORDER BY DATE_TIME) AS RN
                  FROM ZHXQ_NEWS_ARTICLE)
WHERE RN <= 10 试试看我的,用的是oracle数据库
select r.* from ZHXQ_NEWS_ARTICLE r 
where r.rownum<=10
group by r.MODULE_ID 
order by to_char(DATE_TIME ,'YYYY-MM-DD HH24:MI:SS') DESC 都描述出来了,还不会写语句??不就是top 10 ……group……order by 不知道你要的是不是这个效果?

SELECT
  *
FROM
  ZHXQ_NEWS_ARTICLE
WHERE
( SELECT
      COUNT(1)
    FROM
      ZHXQ_NEWS_ARTICLE   subTopnTest
    WHERE
      ZHXQ_NEWS_ARTICLE.MODULE_ID  = subTopnTest.MODULE_ID
      AND  ZHXQ_NEWS_ARTICLE.DATE_TIME < subTopnTest.DATE_TIME
) < 10
ORDER BY
  MODULE_ID , DATE_TIME 

上一个:上海oracle OCP怎么样?
下一个:如何在Oracle的存储过程中建表啊?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,