আমি সমস্ত বিক্রয় তালিকাবদ্ধ করতে চান, এবং যোগফল দিন।
Sales (saleID INT, amount INT, created DATETIME)
আপডেট আমি এসকিউএল সার্ভার 2005 ব্যবহার করছি
আমি সমস্ত বিক্রয় তালিকাবদ্ধ করতে চান, এবং যোগফল দিন।
Sales (saleID INT, amount INT, created DATETIME)
আপডেট আমি এসকিউএল সার্ভার 2005 ব্যবহার করছি
উত্তর:
যদি আপনি এসকিউএল সার্ভার ব্যবহার করেন,
dateadd(DAY,0, datediff(day,0, created))
তৈরি দিন ফিরে আসবে
উদাহরণস্বরূপ, বিক্রয়'৯৯-১০-০২ 06: 12: 55.000 'এ তৈরি করা হলে,
dateadd(DAY,0, datediff(day,0, created))
' 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))
এসকিউএল সার্ভারের জন্য:
GROUP BY datepart(year,datefield),
datepart(month,datefield),
datepart(day,datefield)
বা দ্রুত (Q8-কোডার থেকে):
GROUP BY dateadd(DAY,0, datediff(day,0, created))
মাইএসকিউএল এর জন্য:
GROUP BY year(datefield), month(datefield), day(datefield)
বা আরও ভাল (জন ব্রাইট থেকে):
GROUP BY date(datefield)
ওরাকল এর জন্য:
GROUP BY to_char(datefield, 'yyyy-mm-dd')
বা দ্রুত (আয়রনগোফি থেকে):
GROUP BY trunc(created);
ইনফর্মিক্সের জন্য (জোনাথন লেফলার লিখেছেন):
GROUP BY date_column
GROUP BY EXTEND(datetime_column, YEAR TO DAY)
আপনি যদি মাইএসকিউএল ব্যবহার করেন:
SELECT
DATE(created) AS saledate,
SUM(amount)
FROM
Sales
GROUP BY
saledate
আপনি যদি এমএস এসকিউএল ২০০৮ ব্যবহার করেন:
SELECT
CAST(created AS date) AS saledate,
SUM(amount)
FROM
Sales
GROUP BY
CAST(created AS date)
আসলে এটি আপনি যে ডিবিএমএস ব্যবহার করছেন তার উপর নির্ভর করে তবে নিয়মিত এসকিউএলে convert(varchar,DateColumn,101)
DATETIME ফর্ম্যাটটি তারিখের (একদিন) পরিবর্তন করবে
তাই:
SELECT
sum(amount)
FROM
sales
GROUP BY
convert(varchar,created,101)
চৌম্বক সংখ্যাটি 101
রূপান্তরিত হওয়ার তারিখের ফর্ম্যাট
আপনি যদি এসকিউএল সার্ভার ব্যবহার করেন তবে আপনি আপনার টেবিলটিতে তিনটি গণনা করা ক্ষেত্র যুক্ত করতে পারেন:
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
এই গণনা করা ক্ষেত্রগুলি সর্বদা আপ টু ডেট থাকবে (যখন আপনার "তৈরি" তারিখ পরিবর্তন হয়), সেগুলি আপনার টেবিলের অংশ, এগুলি কেবল নিয়মিত ক্ষেত্রের মতো ব্যবহার করা যেতে পারে এবং এমনকি সূচিওযুক্ত করা যেতে পারে (যদি তারা "নিখরচায় থাকে" ) - আইএমএইচও, সম্পূর্ণরূপে নিখরচায় দুর্দান্ত বৈশিষ্ট্য।
আঙ্গুরের ছিরড়া
ওরাকল জন্য আপনি পারেন
group by trunc(created);
যেহেতু এটি তৈরি করা ডেটটাইমটিকে আগের মধ্যরাতে ছাঁটাই করে।
আরেকটি বিকল্প হল
group by to_char(created, 'DD.MM.YYYY');
যা একই ফলাফল অর্জন করে তবে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ঘোঁড়্টুফোঁপি) একইরকম ফলাফল অর্জন করে তবে ধীর হতে পারে কারণ এটির জন্য ধরণের রূপান্তর প্রয়োজন it
PostgreSQL এর জন্য:
GROUP BY to_char(timestampfield, 'yyyy-mm-dd')
বা castালাই ব্যবহার:
GROUP BY timestampfield::date
আপনি যদি গতি চান, দ্বিতীয় বিকল্পটি ব্যবহার করুন এবং একটি সূচক যুক্ত করুন:
CREATE INDEX tablename_timestampfield_date_idx ON tablename(date(timestampfield));
লিনক ব্যবহার করুন
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)
}