sql - SQL 平均计数 postgresql
问题描述
我想找出每年(0-10 年前、10-20 年前、20 多年前)表列条目(例如预订)的平均数量是多少。我知道如何做平均部分,但我不知道如何对不同组年份的 AVG 进行分类。
我有这个代码
SELECT DATE_OF_RESERVATION,count(RESERVATIONID) AS RESERVATIONS
FROM RESERVATIONS
WHERE EXTRACT(YEAR FROM Current_Date) - DATE_OF_RESERVATION <= 10
GROUP BY DATE_OF_RESERVATION
这是仅一个类别(第一个)的代码。我想在同一个查询中对所有三个执行此操作,但我无法弄清楚。
解决方案
您可以使用case
表达式。例如:
SELECT (CASE WHEN EXTRACT(YEAR FROM Current_Date) - DATE_OF_RESERVATION < 10
THEN '[0-10)'
WHEN EXTRACT(YEAR FROM Current_Date) - DATE_OF_RESERVATION < 20
THEN '[0-20)'
WHEN EXTRACT(YEAR FROM Current_Date) - DATE_OF_RESERVATION < 30
THEN '[0-30)'
ELSE 'More'
END) as grp,
COUNT(*) AS RESERVATIONS
FROM RESERVATIONS
GROUP BY grp;
推荐阅读
- python - Python获取CSV中第一列的总和到Pandas DF
- python - 在 python 的 __str__ 方法中使用布尔表达式
- python - 面向对象编程 - 通过参数迭代
- java - 如何修复类的 addToCart 方法?
- javascript - jQuery循环遍历字符串计算字符串值的百分比折扣
- google-cloud-storage - Google Cloud Storage - 传输文件停止
- c++ - LCOV 只为头文件生成覆盖率报告
- c++ - 相似类型类的设计
- php - 自定义保存上传的文件名
- netlogo - 如何防止代理在 NetLogo 中“跳过”障碍的能力?