将选择查询更改为计数不同查询

时间:2016-01-29 01:56:09

标签: sql postgresql

我使用Select查询选择成员,一个用作唯一标识符的变量,以及交易日期,日期格式(MM / DD / YYYY)。

Select Members , transaction_date,
FROM table WHERE Criteria = 'xxx'
Group by Members, transaction_date;

我的最终目标是按月计算唯一成员的数量(即,每个月的第3天,第6天,第12天中的唯一成员仅计算一次)。我不想选择任何数据,而是运行此计算(按月计算不同)并输出计算结果。

3 个答案:

答案 0 :(得分:1)

这将每月给出不同的计数。

SQLFiddle Demo

select month,count(*) as distinct_Count_month 
from
(
    select members,to_char(transaction_date, 'YYYY-MM') as month
    from table1
    /* add your where condition */
    group by members,to_char(transaction_date, 'YYYY-MM')
) a
group by month

所以对于这个输入

+---------+------------------+
| members | transaction_date |
+---------+------------------+
|       1 | 12/23/2015       |
|       1 | 11/23/2015       |
|       1 | 11/24/2015       |
|       2 | 11/24/2015       |
|       2 | 10/24/2015       |
+---------+------------------+

您将获得此输出

+----------+----------------------+
|  month   | distinct_count_month |
+----------+----------------------+
| 2015-10  |                    1 |
| 2015-11  |                    2 |
| 2015-12  |                    1 |
+----------+----------------------+

答案 1 :(得分:0)

您可能想尝试一下。这可能会奏效。

SELECT REPLACE(CONVERT(DATE,transaction_date,101),' - ',' /')作为[日期],计数(会员)作为[会员资格] ] 从FROM BAR
WHERE REPLACE(CONVERT(DATE,transaction_date,101),' - ',' /')IN

SELECT REPLACE(CONVERT(DATE,transaction_date,101),' - ',' /') 从FROM BAR

GROUP BY REPLACE(CONVERT(日期,transaction_date,101),' - ',' /')
更换订单(转换(日期,交易日期,101),' - ',' /')

答案 2 :(得分:0)

使用COUNT(DISTINCT成员)和date_trunc('month',transaction_date)来保留大多数计算的时间戳(这也有助于对结果进行排序)。然后可以使用to_char()来控制显示格式,但在其他地方则不需要。

SELECT
      to_char(date_trunc('month', transaction_date), 'YYYY-MM')
    , COUNT(DISTINCT members) AS distinct_Count_month
FROM table1
GROUP BY
      date_trunc('month', transaction_date)
;

结果样本:

| to_char | distinct_count_month |
|---------|----------------------|
| 2015-10 |                    1 |
| 2015-11 |                    2 |
| 2015-12 |                    1 |

请参阅:http://sqlfiddle.com/#!15/57294/2