0

ある年の次の結果を取得したい

month | sales
jan     0.00
feb     4.00
mar     0.00
apr     45.00
.
.
.
.
dec    0.00

私が持っているテーブルは「sales」で、列としてsalse_value、sales_dateがあります。

問題は、MYSQLのcasewhenステートメントを使用して上記の結果をどのように取得できるかです。

4

3 に答える 3

1
SELECT MONTHNAME(date_column), SUM(sales) sales
FROM TableName
GROUP BY MONTHNAME(date_column);
于 2012-11-07T10:30:42.370 に答える
1

すべての月の名前を生成し、それをテーブル名と結合して、レコードがない月の総売上高がゼロになるようにする必要があります。

SELECT  a.MonthName, COALESCE(SUM(b.sales_value), 0) totalSales
FROM    
        (
            SELECT 'Jan' AS monthName, 1 monthOrder
            UNION
            SELECT 'Feb' AS monthName, 2 monthOrder
            UNION
            SELECT 'Mar' AS monthName, 3 monthOrder
            UNION
            SELECT 'Apr' AS monthName, 4 monthOrder
            UNION
            SELECT 'May' AS monthName, 5 monthOrder
            UNION
            SELECT 'Jun' AS monthName, 6 monthOrder
            UNION
            SELECT 'Jul' AS monthName, 7 monthOrder
            UNION
            SELECT 'Aug' AS monthName, 8 monthOrder
            UNION
            SELECT 'Sep' AS monthName, 9 monthOrder
            UNION
            SELECT 'Oct' AS monthName, 10 monthOrder
            UNION
            SELECT 'Nov' AS monthName, 11 monthOrder
            UNION
            SELECT 'Dec' AS monthName, 12 monthOrder
        )   a LEFT JOIN sales b
                ON a.monthName = b.monthName
GROUP BY a.monthName
ORDER BY a.MonthOrder ASC
于 2012-11-07T11:38:40.877 に答える
0

月の省略名を取得したい場合は、試すことができます

SELECT DATE_FORMAT(sales_date, '%b') AS month, SUM(sales_value)
FROM sales
GROUP BY month;

特定の月のレコードがない場合、結果にはその月の行は含まれません。

于 2012-11-07T11:18:24.167 に答える