sql - 为什么我的计数语句返回 0 行
问题描述
我有这个 postgresql 语法
CREATE TABLE Testing (
salesID integer,
datePO date,
empID char(10),
saleDate date
);
INSERT INTO Testing(salesID, datePO, empID, saleDate) VALUES
('11991111', NULL, '234510', '2020-08-20'),
('11992222', NULL, '234510', '2020-08-21'),
('11994444', NULL, '234510', '2020-08-21'),
('86432181', NULL, '841321', '2020-08-25');
我想运行这个语句
Select
salesID
,datePO
,empId
,saleDate
From Testing
Where saleDate between '2020-08-01' and '2020-08-30'
GROUP BY salesID, datePO, empId, saleDate
Having Count(empID) > 1
但我得到0
了返回的结果。Insert
这让我感到困惑,因为正如您所见,应该返回前三行,因为它们符合条件。我需要更改什么才能返回这些行?
如果它有帮助,我的https://www.db-fiddle.com/f/sFN1GEEhCh7f6wcFreukhS/0
解决方案
你有一个group by
,所以你的查询是检查四个键在哪里group by
是相同的。
这些唯一标识每一行,因此没有组有超过一行。
您并没有真正解释要实现的逻辑,因此很难提供建议。
嗯。我猜你希望empId
它出现不止一次。为此,请使用窗口函数:
Select t.*
from (select t.*, count(*) over (partition by cmpid) as cnt
from Testing t
where saleDate between '2020-08-01' and '2020-08-30'
) t
where cnt > 1;
推荐阅读
- flutter - 如何在flutter中访问REST API的JSON数组的复杂内部元素
- c# - 是否可以将 C# 9 用于 Xamarin?
- python - 为什么这个切片不返回前 3 个元素?
- flutter - Flutter - 如何将元素移动到列表的末尾?
- string - Powershell:从txt中提取几个字符串并从中创建表
- wordpress - 如果购物车中存在两种不同的运输类别,则仅显示 1 个特定的运输类别
- php - Codeigniter 3 - do_upload 中无法识别文件
- angular - owl-date-time 和 http 角度同步
- objective-c - 未定义符号:_OBJC_CLASS_$_FIRApp
- prolog - 扩展统一,SICStus 风格