SQL从表中获取每月总计

时间:2013-02-25 00:09:43

标签: php sql

我有一张价格表,日期作为时间戳,参赛月份和入境年份。

+++++++++++++++++++++++++++++
Price | Date | Month | Year |
+++++++++++++++++++++++++++++
9.00  |343345|   2   | 2013 |
3.00  |343445|   2   | 2013 |
4.00  |343245|   1   | 2013 |
1.00  |342245|   1   | 2013 |
5.00  |333355|   12  | 2012 |

到目前为止,我要列出每月价格总数,问题是GROUP BY重新排序结果,以便它进入第1个月,第12个月然后第2个月,因为我需要结果从当前月份下降,月逐月。

"SELECT month,SUM(price), FROM table  GROUP BY month ORDER BY date DESC "

如果有帮助,我正在使用PHP。

4 个答案:

答案 0 :(得分:1)

它将您的月份视为文本而不是数字。将其转换为整数,它将正确排序。

SELECT CAST(Month as int) as Month, SUM(PRICE), FROM table Group by month ORDER BY CAST(MONTH as int) desc

答案 1 :(得分:0)

将您的月份投射到INT数据类型:

SELECT month,SUM(price), SUM(price), FROM table GROUP BY month ORDER BY cast(month as UNSIGNED) DESC

更多:CAST

答案 2 :(得分:0)

我有类似的问题。我通过添加另一个具有'date'类型的列来解决它,并转换日期中的所有不同字段。然后你可以在时间范围内进行选择。

答案 3 :(得分:0)

问题是您的日期字段未存储为日期时间。而不是按它排序,而是按年份和月份字段排序(我假设您希望按这两个字段进行分组)。

SELECT year,month,SUM(price)
FROM table 
GROUP BY year,month 
ORDER BY year DESC, month DESC

如果将年份和/或月份存储为varchar,则转换它们 - 我怀疑这些存储为整数: