【发布时间】:2019-09-27 18:06:27
【问题描述】:
感谢各位的回复,我没有意识到在 sql 中可以使用更多其他功能。
【问题讨论】:
感谢各位的回复,我没有意识到在 sql 中可以使用更多其他功能。
【问题讨论】:
不使用join和group by,这就是我想出的,使用row_number()通过PURCHASE.RECEIPTNO生成唯一行。
select count(distinct receipt_no) from (
select row_number() over (partition by SUBSTR(RECEIPTNO, 0, 3) order by message) rn
, SUBSTR(RECEIPTNO, 0, 3) as receipt_no
from PURCHASE)
where rn >= 10
【讨论】:
通过使用以下查询,您可以减少 SUSTR 函数调用的次数。
select * from (
with A as
(select SUBSTR(RECEIPTNO, 0, 3) aa from purchase)
select count(*) cc from A
group by aa
)
where cc > 10
【讨论】:
您可以使用count()解析函数如下:
SELECT
SUM(COND_MET) AS RESULT
FROM
(
SELECT
CASE
WHEN COUNT(1) OVER(
PARTITION BY SUBSTR(RECEIPTNO, 0, 3)
) > 10 THEN 1
END AS COND_MET
FROM
PURCHASE
);
干杯!!
【讨论】: