nac*_*rCR 2 sql oracle select distinct
我有以下表格; 格式:table_name [column1,column2等..]
VENDOR_ORDERS [ORDER_ID, ORDER_CREATION_DATETIME, REGION_ID, ZIP_CODE, AMOUNT]
CALENDAR [CALENDAR_WEEK, CALENDAR_DATE]
Run Code Online (Sandbox Code Playgroud)
基本上我想要实现的是写一个会给我的查询:
在COUNT(ORDER_ID)和SUM(AMOUNT)每CALENDAR_WEEK对每一个REGION_ID和DISTINCT(ZIP_CODE)
所以结果应该是这样的:
ZIP_CODE CALENDAR_WEEK REGION_ID COUNT(ORDER_ID) SUM(AMOUNT)
--------------------
XXXXX 01 1 50 987.45
YYYYY 01 1 25 568.32
ZZZZZ 01 1 30 555.63
MMMMM 01 1 10 099.93
XXXXX 15 1 05 999.34
YYYYY 15 1 32 339.67
ZZZZZ 15 1 21 457.23
MMMMM 15 1 88 459.99
Run Code Online (Sandbox Code Playgroud)
我使用以下代码:
SELECT
DISTINCT(vo.ZIP_CODE)
,TO_CHAR(ca.CALENDAR_WEEK)
,TRUNC(vo.ORDER_CREATION_DATETIME) -- this column is not needed, i just added it for visualization purposes
,vo.REGION_ID
,COUNT(vo.ORDER_ID)
,SUM(vo.AMOUNT)
FROM
VENDOR_ORDERS vo
,CALENDAR ca
WHERE
TRUNC(vo.ORDER_CREATION_DATETIME) = sd.CALENDAR_DATE
AND vo.REGION_ID = 1
GROUP BY
vo.ZIP_CODE
,TO_CHAR(ca.CALENDAR_WEEK)
,vo.ORDER_CREATION_DATETIME
,vc.REGION_ID;
Run Code Online (Sandbox Code Playgroud)
问题是,我没有得到DISTINCT(ZIP_CODE)每CALENDAR_WEEK,我有重复ZIP_CODE了相同的CALENDAR_WEEK,相同的REGION_ID,但不同的COUNT(ORDER_ID)和SUM(AMOUNT)
我希望自己清楚明白.在此先感谢您的帮助
你误解了distinct是什么.它不是一个功能.它是一个修饰符select,它会影响所选的所有列.所以,它的行为完全符合它的要求.
如果您希望按邮政编码和周进行汇总,那么这些列应该是group by:
SELECT vo.ZIP_CODE, TO_CHAR(ca.CALENDAR_WEEK),
-- vo.REGION_ID
COUNT(vo.ORDER_ID),
SUM(vo.AMOUNT)
FROM VENDOR_ORDERS vo JOIN
CALENDAR ca
ON TRUNC(vo.ORDER_CREATION_DATETIME) = sd.CALENDAR_DATE
WHERE vo.REGION_ID = 1
GROUP BY vo.ZIP_CODE, TO_CHAR(ca.CALENDAR_WEEK)
Run Code Online (Sandbox Code Playgroud)
region_id假设每个邮政编码都在一个区域内,您也可以包括在内.
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |