查询不同年度数据并在不同字段中展示

sql问题
带有时间字段的一张表,传参“年度”。查询出这一年度以及上一年度的数据。并且是分别在两个字段中展示。

该回答引用ChatGPT

在Oracle和MySQL中,可以使用类似的SQL查询来获取所需的结果:

Oracle SQL:


SELECT
    TO_CHAR(date_column, 'YYYY') AS year,
    COUNT(*) AS count
FROM
    your_table
WHERE
    TO_CHAR(date_column, 'YYYY') IN (:year, TO_CHAR(ADD_MONTHS(TO_DATE(:year, 'YYYY'), -12), 'YYYY'))
GROUP BY
    TO_CHAR(date_column, 'YYYY')

MySQL SQL:


SELECT
    YEAR(date_column) AS year,
    COUNT(*) AS count
FROM
    your_table
WHERE
    YEAR(date_column) IN (:year, YEAR(DATE_SUB(DATE_ADD(DATE_FORMAT(:year, '%Y-01-01'), INTERVAL 1 YEAR), INTERVAL 1 DAY)))
GROUP BY
    YEAR(date_column)

这里的 :year 是传递的参数值,表示需要查询的年份。

这个查询将 date_column 字段按年份进行分组,并计算每个年份的行数。使用 IN 运算符指定需要查询的年份,使用 ADD_MONTHS 或 DATE_ADD/DATA_SUB 函数来获取上一年的年份。最后,将结果分别放置在 year 和 count 字段中返回。