簡體   English   中英

按一列分組並計算另一列

[英]group by of one column and having count of another

我有一個包含 4 列的表“客戶”

name day         product price
A    2021-04-01  p1      100
B    2021-04-01  p1      100
C    2021-04-01  p2      120
A    2021-04-01  p2      120
A    2021-04-02  p1      100
B    2021-04-02  p3      80
C    2021-04-03  p2      120
D    2021-04-03  p2      120
C    2021-04-04  p1      100

用一個命令

SELECT COUNT(name) 
  FROM (SELECT name 
          FROM customer 
         WHERE day > '2021-03-28' 
           AND day < '2021-04-09' 
         GROUP BY name 
        HAVING COUNT(name) > 2)

我可以計算在一段時間內購買超過兩次的客戶數量。

我想知道每天(每天 GROUP BY)有多少顧客在這種情況下購買了一些東西,在一段時間內他們購買了兩次以上的東西。

建議編輯:

對於上述示例 A 和 C 是條件的有效代理。 所需的 output 將是:

day            how_many
2021-04-01     2
2021-04-02     1
2021-04-03     1
2021-04-04     1

我將您的問題解釋為想知道每天有多少客戶進行了多次購買。 如果是這樣,一種方法使用兩個級別的聚合:

select day,
       sum(case when day_count >= 2 then 1 else 0 end) 
from (select c.name, c.day, count(*) as day_count
      from customer c
      group by c.name, c.day
     ) nc
group by day
order by day;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM