用postgresql特性簡化group by 後取每組前n條記錄的方法
需求:
求一段時間內各生產線前3名壞機的原因及壞機數.
step 1, 從將原始資料中抽取品質資料放於t96臨時表
create temp table t96
on commit drop
as
select * from t96_pd_log where recseq between '791G0' and '792G0' and f96_op='PD-QC' ;
可以看下這個t96中對壞機原因的統計情況:
select f96_line,f96_result, sum(f96_qty) as qty from t96 group by f96_line,f96_result order by f96_line,f96_result,qty desc
step2, 一條sql就能得到需求的結果, 其中用了with這個短句,類似於臨時表或子查詢的意思了,但如果用了with定義一個子集,在接著Select裡面可以多處引用. 下面SQL這個A子查詢每條生產線用不良數倒序排,並每記錄給一個行號 ...
with udc_qty_byline as (select f96_line,f96_result, sum(f96_qty) as qty from t96 group by f96_line,f96_result ) SELECT f96_line,f96_result,qty FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY f96_line order by qty DESC) AS Row_ID FROM udc_qty_byline ) AS A WHERE Row_ID <=3 ORDER BY f96_line
Postgresql is powerful.
相關推薦
用postgresql特性簡化group by 後取每組前n條記錄的方法
需求: 求一段時間內各生產線前3名壞機的原因及壞機數. step 1, 從將原始資料中抽取品質資料放於t96臨時表 create temp table t96 on commit drop as
Mysql和Oracl 分組取每組前N條記錄
MySQL取每組的前N條記錄:使用自連線的方式一、對分組的記錄取前N條記錄:例子:取前 2條最大(小)的記錄1234567891011121314151617181.用子查詢:SELECT * FROM right2 a WHERE 2>(SELECT COUNT(*
分組查詢取每組前n條記錄例項
假設有這樣一張運動員比賽成績表 tb_score 現在要求查詢出每個國家的前三名的成績記錄,查詢語句可以這樣寫: 1、 select t3.id,t3.country,t3.score fro
mysql分組取每組前幾條記錄(排名) 附group by與order by的研究
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name--方法2:select a.* from tb a where not exists(select 1 from tb
mysql分組取每組前幾條記錄
1、表SQL: DROP TABLE IF EXISTS `ho_archives`; CREATE TABLE `ho_archives` ( `id` mediumint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
sqlite 分組後獲取每組的第一條記錄
有表如下 CREATE TABLE test ( id INTEGER PRIMARY KEY ,groupid INTEGER DEFAULT 0 ,t INTEGER DEFAULT 0 ,x INTEGER DEFAULT 0 ,y INTEGER DEFAULT 0
mysql使用GROUP BY分組實現取前N條記錄的方法
cls class ges rom 當前 分組 實現 一個 images MySQL中GROUP BY分組取前N條記錄實現 mysql分組,取記錄 GROUP BY之後如何取每組的前兩位下面我來講述mysql中GROUP BY分組取前N條記錄實現方法。 這是測試表(也
mysql分組後取每組指定記錄數的方法
--按某一欄位分組 取最大(小)值所在行的資料 /* 資料如下: name val memo a 2 a2(a的第二個值) a 1 a1--a的第一個值 a 3 a3:a的第三個值 b 1 b1--b的第一個值 b 3 b3
從排序後的結果集中刪除 前n條記錄
not null ima -- date com alt delet lec log 端午有人休息,有人忙 操作前數據: --從排序後的結果集中刪除 前n條記錄delete from emp where empno in (select empno
sql語句分組查詢排序後取出前n條記錄
1.sql語句分組排序後取出前n條記錄 (SELECT * FROM ( SELECT "row_number" () OVER ( PARTITION BY mmsi ORDER BY orginal_in_draught DESC ) A
mysql學生成績排名,分組取前 N 條記錄
score表: CREATE TABLE `score` ( `student_id` int(10) DEFAULT NULL, `class_id` int(10) DEFAULT NULL, `score` int(5) DEFAULT
MySQL取每組的前N條記錄
MySQL 分組後取每組前N條資料 與oracle的 rownumber() over(partition by xxx order by xxx )語句類似,即:對錶分組後排序 CREATE TABLE `mygoods` ( `goods
Mysql分組統計、排序、取前N條記錄解決方案
今日根據專案需求,需要在mysql中解決記錄的分組統計、排序,並抽取前10條記錄的功能。現已解決,解決方案如下: 1)表結構 <span style="font-size:18px;">CREATE TABLE `policy_keywords_rel` (
Linq分組及排序,取前N條記錄
Linq多欄位分組排序並取前N條記錄時,一定要先分組再排序,不然取到的記錄是不規則的 程式碼示例【按HotWord分組,並取sorNum倒序,取前15條記錄】 [Route("api/
MySQL之——GROUP BY分組取欄位最大值
出處:http://blog.csdn.net/l1028386804/article/details/54657412 假設有一個業務場景,需要查詢使用者登入記錄資訊,其中表結構如下: [sql] view plain cop
SQL Server GROUP BY 後 拼接 字串
原文地址:https://blog.csdn.net/u010673842/article/details/79637618 select ID, STUFF((select ',' + name from class where ID = a.ID for xml path('
mysql 分組group by後 根據具體條件進行sum
mysql的手冊中對SUM函式的介紹非常簡單和含糊, 今天在搜資料的時候發現SUM函式的引數還可以加入條件判斷. 比如有如下的一個表: 日期 支出專案名稱 支出類別 支出金額
MySQL(1)------group by 分組 取最大值
首先表結構 create table sysstudentlibrarypool ( id int auto_increment primary key, score int null, time var
group by後的彙總結果,如何去和總和做百分比
有表如下: 表名:table1 欄位有兩個:name amount 表的資料如下: --------------- aa 10 bb 20 aa 10 bb 20 cc 30 --------------- select name, sum(amount) from table1 group by nam
thinkphp下group by分組後獲取每組最新資料
$lock = M('locked_record'); $type = 1; $subQuery = $lock->table('sys_locked_record') ->where(array('type'=>$type)) ->order('