嘗試創建查詢,該查詢將在使用該零件的日期之間為我提供每個汽車零件的使用時間。等等。假設部件 id 1 安裝在 2018-03-01 和 2018-04-01 運行 50 分鐘,然后在 2018-05-10 運行 30 分鐘,這部分的總使用時間應該是 1:20 分鐘。
這些是我的表格的例子。
Table1
| id | part_id | car_id | part_date |
|----|-------- |--------|------------|
| 1 | 1 | 3 | 2018-03-01 |
| 2 | 1 | 1 | 2018-03-28 |
| 3 | 1 | 3 | 2018-05-10 |
Table2
| id | car_id | run_date | puton_time | putoff_time |
|----|--------|------------|---------------------|---------------------|
| 1 | 3 | 2018-04-01 | 2018-04-01 12:00:00 | 2018-04-01 12:50:00 |
| 2 | 2 | 2018-04-10 | 2018-04-10 15:10:00 | 2018-04-10 15:20:00 |
| 3 | 3 | 2018-05-10 | 2018-05-10 10:00:00 | 2018-05-10 10:30:00 |
| 4 | 1 | 2018-05-11 | 2018-05-11 12:00:00 | 2018-04-01 12:50:00 |
表 1 包含每個部件的安裝日期,表 2 包含每個部件的使用時間,并且它們在 car_id 上連接,我嘗試撰寫查詢,但如果有人能找出我在此查詢中的錯誤將是有益的,則它無法正常作業。
我的 SQL 查詢
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(t1.puton_time, t1.putoff_time)))) AS total_time
FROM table2 t1
LEFT JOIN table1 t2 ON t1.car_id=t2.car_id
WHERE t2.id=1 AND t1.run_date BETWEEN t2.datum AND
(SELECT COALESCE(MIN(datum), '2100-01-01') AS NextDate FROM table1 WHERE
id=1 AND t2.part_date > part_date);
Expected result
| part_id | total_time |
|---------|------------|
| 1 | 1:20:00 |
希望這個問題有意義,因為在我的搜索中我沒有發現類似的東西,所以我需要幫助。
解決方案,感謝 Kota Mori
SELECT t1.id, SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(t2.puton_time, t2.putoff_time)))) AS total_time
FROM table1 t1
LEFT JOIN table2 t2 ON t1.car_id = t2.car_id
AND t1.part_date >= t2.run_date
GROUP BY t1.id
uj5u.com熱心網友回復:
您首先需要通過 car_id 以及part_date不應該大于的條件連接兩個表run_date。然后分別計算每個的總分鐘數part_id。
以下是 SQLite 的查詢示例(我現在可以訪問的唯一 SQL 引擎)。由于 SQLite 沒有 datetime 型別,我通過strftime函式將字串轉換為 unix 時間戳。這部分應該根據您使用的 SQL 引擎進行更改。除此之外,這是一個相當標準的 sql 并且主要對其他 SQL 方言有效。
SELECT
t1.id,
sum(
cast(strftime('%s', t2.putoff_time) as integer) -
cast(strftime('%s', t2.puton_time) as integer)
) / 60 AS total_minutes
FROM
table1 t1
LEFT JOIN
table2 t2
ON
t1.car_id = t2.car_id
AND t1.part_date <= t2.run_date
GROUP BY
t1.id
結果如下所示。請注意,ID 1 按預期獲得 80 分鐘 (1:20)。
id time_in_minutes
0 1 80
1 2 80
2 3 30
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/325107.html
標籤:sql
上一篇:如何從鏈接服務器到本地機器創建表
