簡體   English   中英

SQL查詢:如何使用子查詢或AVG函數查找新條目之間的天數?

[英]SQL Query: How to use sub-query or AVG function to find number of days between a new entry?

我有兩個表,其中一個稱為entities具有以下相關列: idcompany_idintegration_id 另一個表是具有identity_idcreated_at列的transactions 鏈接兩個表的外鍵是integration_identity_id

transactions表顯示了從entities表中每個公司收到的交易數。

最終,我想找到發生交易量最大的日期范圍,然后從該范圍中找到每個公司的兩次交易之間的平均天數。

為了找到日期范圍,我使用了此查詢。

SELECT DATE_FORMAT(t.created_at, '%Y/%m/%d'), COUNT(t.id)
FROM entities e
JOIN transactions t
ON ei.id = t.entity_id
GROUP BY t.created_at;

我得到這個:

Date_FORMAT(t.created_at, '%Y/%m/%d') | COUNT(t.id)
+-------------------------------------+------------
2015/11/09                             4

等等

據此,我確定要用作2015/11/09到2015/12/27的范圍,並進行了此查詢

SELECT company_id, COUNT(t.id)
FROM entities e
INNER JOIN transactions t
ON e.integration_id = t.entity_id
WHERE tp.created_at BETWEEN '2015/11/09' AND '2015/12/27'
GROUP BY company_id;

我得到這個:

company_id  | COUNT(t.id)
+-----------+------------
1234          17

等等

這給了我每個公司在此日期范圍內進行的總交易。 現在,按公司查詢兩次交易之間的平均天數的最佳方法是什么? 如何對子查詢或在WHERE子句中的日期上使用AVG函數的方法?

編輯:

玩查詢,我想知道是否有辦法

SELECT company_id, (49 / COUNT(t.id)) ...

49,因為那是該日期范圍內的天數,才能獲得兩次交易之間的平均天數?

我想可能就是這樣,這有意義嗎?

我認為這可能有效:

Select z.company_id, 
datediff(max(y.created_at),min(created_at))/count(y.id) as avg_days_between_orders,
max(y.created_at) as latest_order,
min(created_at) as earliest_order, 
count(y.id) as orders
From
(SELECT entity_id, max(t.created_at) latest, min(t.created_at) earliest
FROM   entities e, transactions t
Where  e.id = t.entity_id
group by entity_id
order by COUNT(t.id) desc
limit 1) x,
transactions y,
entities z
where z.id = x.entity_id
and z.integration_id = y.entity_id
and y.created_at between x.earliest and x.latest
group by company_id;

沒有數據很難。 我有可能在外部查詢的子查詢/聯接中對Integration_id的引用不正確。

暫無
暫無

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

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