簡體   English   中英

查找MySQL查詢結果的字段的最大值

[英]finding the maximum value of a field of a MySQL query result

我有這個查詢:

        select
        id_re_usr,
        year(time) as AYear,
        DAYOFYEAR(time) as ADay,
        DATE_FORMAT(time, "%m-%d-%y") as date,
        count(*) as TotalPerDay
        from numrequest
        where id_re_usr = "u1"
        group by id_re_usr, AYear, ADay
        order by AYear, ADay

它輸出類似

   date      TotalPerDay 
------------------------        
01-01-87         1
01-09-12         5
02-09-12         17
03-09-12         1

我如何在不使用php或更改查詢來更改當前輸出的情況下找到最大的TotalPerDay。

我試圖做到這一點,它的工作原理

  $max=0;
  while($row=mysql_fetch_array($results)){
      if($max<$row['TotalPerDay']){ $max= $row['TotalPerDay'];} 
  }

但是沒有直接的方法嗎?

如果修改查詢,則輸出應為

   date      TotalPerDay        max
----------------------------------------        
01-01-87         1               17
01-09-12         5               17
02-09-12         17              17
03-09-12         1               17

將其與僅最大計數的第二個查詢聯系起來。每天(對於給定用戶)基於最內層查詢的一組每天計數的行。 從那開始,下一個外部函數從該集合中選擇一個MAX()來查找並僅獲得代表最高天數的記錄...由於它將始終返回單行,並連接到原始numRequest表,因此它將是一個笛卡爾,但沒有問題,因為它只有一個記錄,並且無論如何您都希望在每個返回的行上使用該值。

select
      id_re_usr,
      year(time) as AYear,
      DAYOFYEAR(time) as ADay,
      DATE_FORMAT(time, "%m-%d-%y") as date,
      count(*) as TotalPerDay,
      HighestCount.Max1 as HighestOneDayCount
   from
      numrequest,
      ( select max( CountsByDate.DayCount ) Max1
           from ( select count(*) as DayCount
                     from numrequests nr
                     where nr.id_re_usr = "u1"
                     group by date( nr.time )) CountsByDate
      ) HighestCount
   where 
      id_re_usr = "u1"
   group by 
      id_re_usr, 
      AYear, 
      ADay
   order by 
      AYear, 
      ADay

暫無
暫無

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

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