mysql用sql统计pg_report表包含id,finish_time,inquiry_id与pg_inquiry的id相关联,pg_inquiry包含bank_name字段 ,统计上周按银行名统计id数量
时间: 2024-05-08 21:21:27 浏览: 96
可以使用如下 SQL 语句来实现:
```
SELECT pg_inquiry.bank_name, COUNT(pg_report.id) AS id_count
FROM pg_report
JOIN pg_inquiry ON pg_report.inquiry_id = pg_inquiry.id
WHERE YEARWEEK(pg_report.finish_time) = YEARWEEK(NOW()) - 1
GROUP BY pg_inquiry.bank_name
ORDER BY id_count DESC;
```
解释一下上面的 SQL 语句:
- 首先使用 JOIN 将 pg_report 表和 pg_inquiry 表连接起来,连接条件是 pg_report 表中的 inquiry_id 字段等于 pg_inquiry 表中的 id 字段,这样就将这两个表相关联起来了。
- 然后使用 WHERE 子句来过滤出上周的数据,这里使用 YEARWEEK 函数来获取当前日期所在的年份和周数,然后减去 1,就得到了上周的年份和周数。然后再使用 YEARWEEK 函数来获取每条记录的年份和周数,如果两者相同,就说明这条记录是上周的数据,满足条件。
- 接着使用 GROUP BY 子句按照银行名进行分组,然后使用 COUNT 函数统计每个银行名对应的 id 数量。
- 最后使用 ORDER BY 子句按照 id 数量降序排序,这样就可以将银行名按照 id 数量从多到少排列了。
相关问题
mysql用sql统计pg_inquiry表包含id,create_time,bank_name,统计本周按银行名统计id数量
可以使用以下 SQL 语句统计:
```
SELECT bank_name, COUNT(id) as id_count
FROM pg_inquiry
WHERE YEARWEEK(create_time) = YEARWEEK(NOW())
GROUP BY bank_name;
```
这个 SQL 语句使用了 YEARWEEK 函数来获取当前时间所在的周,然后根据银行名称分组并统计 id 数量。注意,这个语句假设 `create_time` 列是一个包含日期和时间的 DATETIME 类型,如果是其他类型的列需要做相应的调整。
mysql用sql统计pg_inquiry表包含id,create_time,bank_name,统计上周按银行名统计id数量
可以使用以下SQL语句进行统计:
```
SELECT bank_name, COUNT(id) AS id_count
FROM pg_inquiry
WHERE create_time BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW()
GROUP BY bank_name;
```
这个SQL语句会统计上一周内,按银行名分组,每个银行的id数量。其中,`COUNT(id)`函数用于统计每个银行的id数量,`GROUP BY bank_name`用于按银行名进行分组。
阅读全文