簡體   English   中英

我如何 go 創建這個復雜的 SQL 查詢?

[英]How can i go about creating this complex SQL query?

我有一個看起來像這樣的表:

Table1

Time_stamp bigint, << Notice this is bigint and not timestamp, so this needs to be casted
amount int, 
name_ev text, 
badge_number int,
type text

(我們只想提取type所在行的信息('customer', 'client')

另一個看起來像這樣的表:

Table2

timestamp TIMESTAMP,
low int,
high int

(這是按分鍾計算的,所以每分鍾都有一個值低,高)

第三個表格如下所示:

Table3

name text,
badge_number text, << Notice this is text and not int, so this needs to be casted
trip_data

(只能有一個名字,一個badge_number,意思是這里沒有騙子)

我試圖拉這個:

timestamp, name, badge_number, highest_Day, lowest_Day, highest_Week, lowest_Week, highest_Month, lowest_Month, trip_data, amount_day, amount_week, amount_month, badge_day, badge_week, badge_month, last_trip_amount, last_trip_time_stamp

解釋:

解釋:

  1. timestampTable1 1 中的時間戳
  2. name : Table1中的name
  3. badge_number : Table1中的badge_number
  4. highest_Day : Table2high的最大值,其中Table2.timestamp介於Table1.time_stamp - 1 DayTable1.time_stamp之間
  5. lowest_Day : Table2low的最大值,其中Table2.timestamp介於Table1.time_stamp - 1 DayTable1.time_stamp之間
  6. (周/月相同,但不是日,而是 1 周(7 天)和 1 個月(30 天))...
  7. trip_data :來自Table3trip_data的值,其中Table3.name匹配Table1.name_ev並且Table3.badge_number匹配Table1_badge_number
  8. amount_dayTable1.time_stamp介於Table1.time_stamp - 1 DayTable1之間的所有對象的amount Table1.time_stamp
  9. (周/月相同,但不是日,而是 1 周(7 天)和 1 個月(30 天))...
  10. badge_day :與 amount_day 相同,但僅在Table1.badge_numberTable1.badge_number匹配且Table1.time_stamp介於Table1.time_stamp - 1 DayTable1.time_stamp之間的情況下
  11. (周/月相同,但不是日,而是 1 周(7 天)和 1 個月(30 天))...
  12. last_trip_amount :是Table1.amount的值,其中Table1.name_evTable1.badge_number匹配記錄name_evbadge_number
  13. last_trip_time_stamp :與上面相同,但不是數量,而是時間戳。

請注意, Table1未排序,在檢索最后一個 object 時應按時間戳排序(即按 time_stamp desc 限制 1 排序)或其他任何內容。

目標是傳遞一個badge_number並在上述響應中返回所有記錄(即~15k)。

使用 WITH 子句將大查詢拆分為幾個較小的查詢,您可以命名這些查詢。 每個子查詢只會執行一次,性能應該不成問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM