まず最初に、この単一のテーブルエンティティにパッケージを1行で表示させるビューを作成してください。
考慮すると、テーブルの構造は、ので、あなたのビューがそのビュー上でその後のクエリ次
CREATE VIEW packageStatus AS
SELECT
pl1.cityId as cityId ,
pl1.packageId as packageId ,
pl1.changeDate as DropTIme,
pl2.changeDate as Picktime
FROM
`packageList` pl1 , `packageList` pl2
WHERE
pl1.status = "Droped" AND pl2.status = "Picked"
and pl1.packageId = pl2.packageId
グループの単純なクエリであることを行っているに基づいて作成されshoultこの
CREATE TABLE `packageList` (
`cityId` int(10) NOT NULL,
`packageId` int(10) NOT NULL,
`status` varchar(256) NOT NULL,
`changedate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ようなものになります以下のクエリのようなもののみ
SELECT
tt.cityid,avg(DATEDIFF(tt.DropTIme,tt.Picktime))
FROM
(SELECT
pl1.cityId as cityId ,
pl1.packageId as packageId ,
pl1.changeDate as DropTIme,
pl2.changeDate as Picktime
FROM
`packageList` pl1 , `packageList` pl2
WHERE
pl1.status = "Droped" AND pl2.status = "Picked"
and pl1.packageId = pl2.packageId) as tmpTable tt Group BY cityId
回答クエリのみを使用する
select city, Pkg, status, Change_Date,
change_date -
lag(change_date, 1, change_date) over (partition by pkg order by case status when 'Dropped' then 1 else 2 end) as diff
where status in ('Dropped', 'Intransit')
from the_table;
から別のdate
を減算した結果が(分数)の日を表す数である:outは
SELECT
cityid,avg(DATEDIFF(DropTIme,Picktime))
FROM
(SELECT
pl1.cityId as cityId ,
pl1.packageId as packageId ,
pl1.changeDate as DropTIme,
pl2.changeDate as Picktime
FROM
packageList
pl1 , packageList
pl2
WHERE
pl1.status = "Droped" AND pl2.status = "Picked"
and pl1.packageId = pl2.packageId) as tmpTable
Group BY cityId
どのDBMSを使用していますか? –
'Change_Date'とは何ですか? –
私はOracle DBを使用しています –