我有这样的表1:

number     p     uc_id     date
3         1        g        24/09/2015
4         0        g        24/09/2015
5         1        g        24/09/2015
5         1        f        25/09/2015
3         0        f        25/09/2015
5         1        g        26/09/2015


和表2相似:

id       name
g        Magic
f        Blue


我希望该sql查询返回类似

name      min     max
Magic     1       2
Blue      1       1


我的查询我做了类似日期的事,但是我无法检索最小和最大

Select
    p.date,
    uc.name,
    min((Select
         uc.name,
         count(p.p)
         from table1 p, table2 uc
         where p.p = 1 and uc.id = p.uc_id
         group by uc.name, p.date)) as 'Min',
    max((Select uc.name,
         count(p.p)
         from table1 p, table2 uc
         where p.p=1 and uc.id = p.uc_id
         group by uc.name, p.date)) as 'Max'
From table1 p, table2 uc
Where uc.id = p.uc_id
group by uc.name


我想对p = 1的列p进行计数,并按日期对它们进行分组,对于每个日期,我想检索之前完成的计数的最小值和最大值。在另一个表中也显示名称。

最佳答案

SQL FIDDLE DEMO

创建一个总日期名称为日期的子查询。

SELECT name, min(nCount) cMin, max(nCount) cMax
FROM (Select
          uc.name,
          p.date,
          count(p) as nCount
      From table1 p, table2 uc
      Where uc.id = p.uc_id
      and   p = 1
      group by uc.name, p.date) nameCount
GROUP BY name

关于mysql - 从字段中计算最小和最大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32444168/

10-15 21:10