【问题标题】:sum of division of two values, grouped, highest three两个值相除的总和,分组,最高三个
【发布时间】:2017-02-26 07:12:01
【问题描述】:

我想从表中获取最高的三个值。通过将按名称分组的所有“伏特”加在一起然后除以安培来计算该值。每个名称的安培数始终相同,因此无需计算(也无需平均)。

我已经尝试了下面的示例,但 TotalSum 对所有三个都返回 0。

SELECT name, sum(volts/amps) TotalSum 
FROM mytable 
WHERE MONTH(FROM_UNIXTIME(time_to)) = MONTH(CURRENT_DATE()) 
GROUP BY field1 
ORDER BY TotalSum 
LIMIT 3

...

while ($row = mysqli_fetch_array($mostused, MYSQLI_ASSOC)) {
    echo $row['name'] . ' (' . $row['TotalSum'] . '), ';
}

表:

name    volts    amps
A       10       2
A       15       2
A       12       2
B       2        1
B       4        1
B       8        1
C       20       5
C       20       5
C       20       5

结果按最高排序:

1] A = 37/2 = 18.5 ... echo 'A (18.5)'
2] B = 14/1 = 14 ... echo 'B (14)'
3] C = 60/5 = 12 ... echo 'C (12)'

我的查询有什么错误?

【问题讨论】:

  • DESC 最高。没有字段 1。没有time_to

标签: mysql group-by sum


【解决方案1】:

使用降序排序得到前三位:

SELECT name, sum(volts/amps) TotalSum 
FROM mytable 
WHERE MONTH(FROM_UNIXTIME(time_to)) = MONTH(CURRENT_DATE()) 
GROUP BY name 
ORDER BY TotalSum desc  -- here
LIMIT 3

【讨论】:

  • 哇,真不敢相信我错过了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多