首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询:显示当月开票超过4张的业务员姓名

查询:显示当月开票超过4张的业务员姓名
EN

Stack Overflow用户
提问于 2012-05-20 09:21:00
回答 2查看 147关注 0票数 0

PostgreSQL查询:显示当月开票超过4张的业务员姓名。

表格:articles, customers, invoices, lines_invoice, province, towns, sellers

我的查询返回值而不考虑计数在同一个月,我如何做到这一点?

代码语言:javascript
复制
select s.codseller, s.name 
from sellers s 
join invoices i using (codseller) 
group by s.codseller 
having count (codinvoice) > 4;

谢谢!

编辑:

屏幕上显示的正确解决方案是:

codven =代码销售者名称= name

在我的查询中,它显示了额外的两行,因为它计算了超过4张发票的销售人员,但在不同的月份。

EN

回答 2

Stack Overflow用户

发布于 2012-05-20 09:36:32

代码语言:javascript
复制
SELECT s.id, s.name
      ,date_trunc('month', i.sales_date::timestamp) AS month
      ,COUNT(i.id) AS invoices_for_month
  FROM seller s
  INNER JOIN invoices i ON (s.id = i.seller_id)
  GROUP BY s.id, s.name, date_trunc('month', i.sales_date::timestamp)
  HAVING COUNT(i.id) > 4

测试的环境是:

代码语言:javascript
复制
CREATE TABLE seller (id int, name text);
INSERT INTO seller VALUES(1, 'Joe');
INSERT INTO seller VALUES(2, 'Mike');
INSERT INTO seller VALUES(3, 'Tom');

CREATE TABLE invoices(id int, seller_id int, sales_date date);
INSERT INTO invoices VALUES(1, 1, now());
INSERT INTO invoices VALUES(2, 1, now() - interval '35' day);
INSERT INTO invoices VALUES(3, 1, now() - interval '37' day);
INSERT INTO invoices VALUES(4, 1, now() - interval '39' day);
INSERT INTO invoices VALUES(5, 1, now() - interval '40' day);
INSERT INTO invoices VALUES(6, 1, now() - interval '40' day);
INSERT INTO invoices VALUES(7, 2, now());
票数 2
EN

Stack Overflow用户

发布于 2012-05-20 09:34:33

我把答案留在这里,但Glenn的答案更好

您必须提取group_by子句中的月份(未经测试):

代码语言:javascript
复制
select s.codseller, 
EXTRACT(MONTH FROM i.date) as month, 
EXTRACT(YEAR FROM i.date) as year, s.name 
from sellers s 
join invoices i using (codseller) 
group by s.codseller, month, year
having count (codinvoice) > 4;

也请看一下How do I group by month and year when only having a datetime field?

您还应该看看postgresqls datetime functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10670066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档