[SQL] 하루 그룹에 SQL 쿼리
SQL하루 그룹에 SQL 쿼리
나는 모든 판매 및 그룹 하루 합을 나열합니다.
Sales (saleID INT, amount INT, created DATETIME)
최신 정보 나는 2005 SQL 서버를 사용하고
해결법
-
==============================
1.SQL Server를 사용하는 경우,
SQL Server를 사용하는 경우,
DATEADD (DAY, 0, DATEDIFF (일, 0) 생성) 날 돌아갑니다 생성
예를 들어, 판매는 '55.000 : 12 06 2009-11-02'에 생성 DATEADD (DAY, 0, DATEDIFF (일, 영, 창조)) 반환 '2009-11-02 00 : 00 : 00.000'
select sum(amount) as total, dateadd(DAY,0, datediff(day,0, created)) as created from sales group by dateadd(DAY,0, datediff(day,0, created))
-
==============================
2.SQL Server의 경우 :
SQL Server의 경우 :
GROUP BY datepart(year,datefield), datepart(month,datefield), datepart(day,datefield)
또는 빠르게 (Q8-코더에서) :
GROUP BY dateadd(DAY,0, datediff(day,0, created))
MySQL의 경우 :
GROUP BY year(datefield), month(datefield), day(datefield)
또는 (존 브라이트에서) 더 나은 :
GROUP BY date(datefield)
Oracle의 경우 :
GROUP BY to_char(datefield, 'yyyy-mm-dd')
또는 빠르게 (IronGoofy에서) :
GROUP BY trunc(created);
(조나단 레플러에 의해) Informix의 :
GROUP BY date_column GROUP BY EXTEND(datetime_column, YEAR TO DAY)
-
==============================
3.당신이 MySQL을 사용하는 경우 :
당신이 MySQL을 사용하는 경우 :
SELECT DATE(created) AS saledate, SUM(amount) FROM Sales GROUP BY saledate
당신은 2008 년 MS SQL을 사용하는 경우 :
SELECT CAST(created AS date) AS saledate, SUM(amount) FROM Sales GROUP BY CAST(created AS date)
-
==============================
4.실제로이 사용되지만 일반 SQL 변환 (VARCHAR, DateColumn, 101)에 현재까지 DATETIME 형식을 변경합니다 DBMS에 따라 달라집니다 (한 일)
실제로이 사용되지만 일반 SQL 변환 (VARCHAR, DateColumn, 101)에 현재까지 DATETIME 형식을 변경합니다 DBMS에 따라 달라집니다 (한 일)
그래서:
SELECT sum(amount) FROM sales GROUP BY convert(varchar,created,101)
마법의 번호 (101)는 변환 어떤 날짜 형식입니다
-
==============================
5.SQL Server를 사용하는 경우, 당신은 당신의 테이블에 세 계산 필드를 추가 할 수 있습니다 :
SQL Server를 사용하는 경우, 당신은 당신의 테이블에 세 계산 필드를 추가 할 수 있습니다 :
Sales (saleID INT, amount INT, created DATETIME) ALTER TABLE dbo.Sales ADD SaleYear AS YEAR(Created) PERSISTED ALTER TABLE dbo.Sales ADD SaleMonth AS MONTH(Created) PERSISTED ALTER TABLE dbo.Sales ADD SaleDay AS DAY(Created) PERSISTED
지금 당신은 그룹 별, 일, 월 또는 판매의 연도 별 등으로 위해 쉽게 할 수 :
SELECT SaleDay, SUM(Amount) FROM dbo.Sales GROUP BY SaleDay
이러한 계산 필드 (항상 최신 (당신의 "만든"날짜 변경), 그들은 테이블의있는 거 일부, 그들은 단지 일반 필드처럼 사용할 수있는 상태로 유지됩니다, 심지어 색인 할 수있는 경우들이있는 거 "PERSISTED" ) - 완전히 사용 미만의 위대한 기능, 이럴.
즙을 짜고 난 찌꺼기
-
==============================
6.Oracle의 경우 다음을 수행 할 수 있습니다
Oracle의 경우 다음을 수행 할 수 있습니다
group by trunc(created);
이 자릅니다로 이전 자정에 날짜를 만들었습니다.
또 다른 옵션이다
group by to_char(created, 'DD.MM.YYYY');
이는 동일한 결과를 얻을 수 있지만,이 형식 변환을 필요로 느릴 수있다.
-
==============================
7.PostgreSQL의 경우 :
PostgreSQL의 경우 :
GROUP BY to_char(timestampfield, 'yyyy-mm-dd')
또는 캐스트를 사용하여 :
GROUP BY timestampfield::date
당신이 속도를 원하는 경우, 두 번째 옵션을 사용하여 인덱스를 추가 :
CREATE INDEX tablename_timestampfield_date_idx ON tablename(date(timestampfield));
-
==============================
8.사용 LINQ
사용 LINQ
from c in Customers group c by DbFunctions.TruncateTime(c.CreateTime) into date orderby date.Key descending select new { Value = date.Count().ToString(), Name = date.Key.ToString().Substring(0, 10) }
from https://stackoverflow.com/questions/1658340/sql-query-to-group-by-day by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 각 루프에 대한 SQL 서버 (0) | 2020.06.22 |
---|---|
[SQL] (다른 테이블이다)의 다른 컬럼에 하나 개의 컬럼 데이터를 복사 (0) | 2020.06.22 |
[SQL] 정렬 평균은 무엇입니까? (0) | 2020.06.22 |
[SQL] 위도 경도에 따라 수행 반경 검색을위한 SQL 쿼리 (0) | 2020.06.22 |
[SQL] 어떻게 SQL 2000/2005에 Oracle 데이터베이스에 당신에게 설정 연결된 서버를합니까? (0) | 2020.06.22 |