Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 基于分组数据的PostgreSQL计数数据_Node.js_Postgresql - Fatal编程技术网

Node.js 基于分组数据的PostgreSQL计数数据

Node.js 基于分组数据的PostgreSQL计数数据,node.js,postgresql,Node.js,Postgresql,我有一个像这样的数据库 users email name state id bill@domain.com Bill CA 1 Susan WY 2 jill@domain.com Jill CA 3 phil@domain.com Phil WY 4 你会注意到苏珊没有电子邮件 我试图获得每个州的记录数

我有一个像这样的数据库

users
email             name    state       id
bill@domain.com   Bill    CA           1
                  Susan   WY           2
jill@domain.com   Jill    CA           3
phil@domain.com   Phil    WY           4
你会注意到苏珊没有电子邮件

我试图获得每个州的记录数,然后是每个州的非空电子邮件总数

我可以得到这样的州总数:

[
  {state: 'CA', count: 2, email_count: 2},
  {state: 'WY', count: 2, email_count: 1}
]
选择状态,按状态从用户组中将*计数为计数

这很有效

然后我试着得到这样的电子邮件总数:

[
  {state: 'CA', count: 2, email_count: 2},
  {state: 'WY', count: 2, email_count: 1}
]
选择state,COUNT*作为COUNT,COUNTSELECT*从电子邮件不为NULL的用户按状态分组

但这返回了一个解析语法错误

我正在尝试获取如下返回数据集:

[
  {state: 'CA', count: 2, email_count: 2},
  {state: 'WY', count: 2, email_count: 1}
]
试试这个

SELECT 
    state,
    COUNT(*) AS total_count,
    SUM(CASE WHEN email is not null then 1 ELSE 0 END) AS count_email_not_null
FROM users 
GROUP BY state
它将为您提供预期的输出