sql - 带计数子查询、内部联接和组的查询

标签 sql postgresql group-by subquery

我绝对是个 SQL 菜鸟,我一直在绞尽脑汁在 Postgresql 中编写一个具有以下表结构的复杂查询:

CREATE TABLE reports
(
  reportid character varying(20) NOT NULL,
  userid integer NOT NULL,
  reporttype character varying(40) NOT NULL,  
)

CREATE TABLE users
(
  userid serial NOT NULL,
  username character varying(20) NOT NULL,
)

查询的目的是获取每个用户的报告类型数量并将其显示在一列中。共有三种不同类型的报告。

使用 group-by 的简单查询将解决问题,但将其显示在不同的行中:

select count(*) as Amount,
       u.username,
       r.reporttype 
from reports r,
     users u 
where r.userid=u.userid 
group by u.username,r.reporttype 
order by u.username

最佳答案

SELECT
  username,
  (
  SELECT 
    COUNT(*)
  FROM reports 
  WHERE users.userid = reports.userid && reports.reporttype = 'Type1'
  ) As Type1,
  (
  SELECT 
    COUNT(*)
  FROM reports 
  WHERE users.userid = reports.userid && reports.reporttype = 'Type2'
  ) As Type2,
  (
  SELECT 
    COUNT(*)
  FROM reports 
  WHERE users.userid = reports.userid && reports.reporttype = 'Type3'
  ) As Type3
FROM
  users
WHERE 
  EXISTS(
    SELECT 
      NULL
    FROM 
      reports
    WHERE 
       users.userid = reports.userid
  )

关于sql - 带计数子查询、内部联接和组的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860295/

相关文章:

sql - rails : batched attribute queries using AREL

php - 我可以相信 mysql_insert_id() 返回正确的值,多线程偏执狂

sql - “CONCAT”不是可识别的内置函数名称。使用 Inner Join 更新交易

python - 通过 groupby 连接 pandas Dataframe

sql - 使用 run_date 与 current_date 编写计划查询

java - Liquibase 上必须指定changeLogFile 错误

SELECT 查询的 PostgreSQL 自动提交效率

postgresql - 外部数据包装器远程触发器找不到远程表

sql - 如何在SQL中分组并选择最小值

sql - 在一个查询中使用 group by 计算多列