这应该是一个相当简单的任务。我可以用cursor
完成它,但是我真的很想像普通的query
那样做。表格摘要如下:CustId
,ProductId
,OrderId
,UnitPrice
,LineTotal
。对于每个SUM()
和LineTotal
,我需要获取所有COUNT()
的{{1}}和所有唯一OrderId
的{{1}},其中CustId
是至少在2个不同的ProductId
上具有相同的含义。我的查询就像下面的查询一样,但是经过验证,我意识到ProductId
的唯一性受到损害,因此OrderId
函数返回错误的结果。请指教。
OrderId
答案 0 :(得分:1)
其中ProductId在至少2个不同的OrderId上相同。
您需要使用apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: host1.com
http:
paths:
- path: /web1
backend:
serviceName: service1
servicePort: 443
- path: /api/v1/a
backend:
serviceName: service2
servicePort: 80
- path: /api/v1/b
backend:
serviceName: service3
servicePort: 80
- host: host2.com
http:
paths:
- path: /web2
backend:
serviceName: service4
servicePort: 443
- path: /api/v2/a
backend:
serviceName: service5
servicePort: 80
(或IN(sub-query)
也可以)构造而不是HAVING来强制执行此要求。这是因为您要按EXISTS()
和ProductId
进行分组,但是此要求仅在CustId
上,并且不受ProductId
的影响。
在伪代码中
CustId
答案 1 :(得分:1)
您想要HAVING COUNT(DISTINCT h.OrderId) > 2
而不是HAVING COUNT(h.OrderId) > 1
,这不是 2个不同的OrderId 的意思吗?如果不使用> 1
,但保留DISTINCT
:
SELECT h.CustId
, h.ProductId
, h.COUNT(DISTINCT h.OrderId)
, h.SUM(h.LineTotal)
FROM History h
GROUP BY h.CustId
, h.ProductId
HAVING COUNT(DISTINCT h.OrderId) > 2