0
我有MySQL表。我需要爲每個組選擇兩個最高值, ,但第二高值不能是「更近期」。如果項目1的最高值爲日期'2015-12-01',則第二高值必須早於'2015-12-01'。此日期是應用程序內的用戶輸入,例如:用戶輸入日期'2014-01-03',並按日期獲得2個最高價值訂單。SQl查詢 - 每個組2個最高值,第二個必須是「年輕」,然後第一個
- '2013年12月5日' - 500訪問
'二○一三年十月十一日' - 480個viists
+ --------- + ----------- + ---------+ | project | visits | date | + --------- + ----------- + ---------+ | 1 | 750 |2015-12-01| | 1 | 582 |2014-11-01| | 1 | 423 |2013-10-02| | 2 | 666 |2016-01-01| | 2 | 812 |2012-02-02| | 2 | 450 |2014-03-05| + --------- + ----------- + -------- +
編輯:我試試這個(更復雜那麼上面的例子)+加入表由於ProjectName
set @num := 0, @group := '';
select ProjectName,visits, date
from
(
select date, Projects_ID, visits,
@num := if(@group = `Projects_ID`, @num + 1, 1) as row_number,
@group := Projects_ID as col
from Hits
where date < '2016-01-11' and visits > 0
order by Projects_ID,date, visits desc
) as x inner join Projects as p on x.Projects_ID =
p.ID
where x.row_number <= 2
group by ProjectName,Projects_ID, date
我得到表中最高的價值,但我n有些情況的第二高值是「最近」,然後是最高值。
我不明白規則。 「日期」不比其他日期「更年輕」 - 無論是更早或更晚。而且,對於您的樣本數據,預期的結果是什麼? –
您的「用戶輸入日期」語句沒有意義 - 用戶選擇的日期與查詢有何關係? –
@KristenWaite用戶通過UI在我的應用中選擇輸入值.. –