我有一张价格表,日期作为时间戳,参赛月份和入境年份。
+++++++++++++++++++++++++++++
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。
答案 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,则转换它们 - 我怀疑这些存储为整数: