sql >> データベース >  >> RDS >> Sqlserver

SQL クエリ - 年ごとの売上高の伸び

    このクエリを試してください:

    SELECT t1.tenant, t1.YEAR, t1.SALES,
        CASE WHEN t2.YEAR IS NOT NULL THEN
            FORMAT(
                CONVERT(DECIMAL(10, 2), (t1.SALES - t2.SALES)) /
                CONVERT(DECIMAL(10, 2), t2.SALES), 'p')
        ELSE NULL END AS "YEARLY GROWTH"
    FROM
    (
        SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
        FROM tenantSales
        GROUP BY tenant, YEAR(date)
    ) t1
    LEFT JOIN
    (
        SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
        FROM tenantSales
        GROUP BY tenant, YEAR(date)
    ) t2
    ON t1.tenant = t2.tenant AND t2.YEAR = t1.YEAR - 1
    

    下のリンクをクリックして、動作するデモをご覧ください:

    SQLFiddle

    遅い更新:

    Common Table Expressions を使用して同じアプローチを試すこともできます。このアプローチを使用すると、上記のクエリは次のようになります。

    WITH cte AS(SELECT tenant, YEAR(date) AS YEAR, SUM(sales) AS SALES
                FROM tenantSales
                GROUP BY tenant, YEAR(date))
    SELECT c1.*, CONVERT(varchar,
                     CONVERT(DECIMAL(10,2),
                         CONVERT(DECIMAL(10, 2), (c1.SALES - c2.SALES)) /
                         CONVERT(DECIMAL(10, 2), c2.SALES))) + '%' AS "YEARLY GROWTH"
    FROM cte c1
    LEFT JOIN cte c2 ON c1.tenant = c2.tenant AND c2.YEAR = c1.YEAR - 1
    

    そして、これをテストできる別の Fiddle があります:

    SQLFiddle



    1. WordPressプラグインで新しいページを作成するにはどうすればよいですか?

    2. SELECT ... * FOR UPDATE *の目的は何ですか?

    3. APIクライアントに1,000,000のデータベース結果を提供するにはどうすればよいですか?

    4. PHPを使用してmysqlデータベースに.sqlファイルをインポートするにはどうすればよいですか?