মাইএসকিউএল / এসকিউএল: কেবল একটি ডেটটাইম কলামে তারিখ অনুসারে গ্রুপ করুন


181

একটি কলামের মতো একটি টেবিল থাকা: mydate DATETIME ...

আমার যেমন একটি প্রশ্ন আছে:

SELECT SUM(foo), mydate FROM a_table GROUP BY a_table.mydate;

এটি datetimeঘন্টা এবং মিনিট সহ পুরো দ্বারা গ্রুপ হবে । আমি গ্রুপটি তৈরি করতে চাই, কেবল তারিখ YYYY/MM/DDদ্বারা নয় YYYY/MM/DD/HH/mm

কেউ কি করতে পারে জানেন? আমি এখনও এটি করতে পারি (যেমন আমি এটিএম আছি), আমার কোডটিতে গতিশীল, তবে আমি ট্র্যাশ কোড সাফ করছি এবং এটি এসকিউএল এর মাধ্যমে তৈরি করা যেতে পারে আমি কীভাবে খুঁজে পাচ্ছি না :(।


1
এই উত্তরে বর্ণিত আরও ভাল পদ্ধতির !
ওয়েবকোডার

উত্তর:


287

তারিখের তারিখের সময়টি কাস্ট করুন, তারপরে এই বাক্য গঠনটি ব্যবহার করে গ্রুপ করুন:

SELECT SUM(foo), DATE(mydate) FROM a_table GROUP BY DATE(a_table.mydate);

অথবা আপনি @ অরল্যান্ডু suggested৩ এর পরামর্শ অনুসারে উপনামের মাধ্যমে গ্রুপ করতে পারেন:

SELECT SUM(foo), DATE(mydate) DateOnly FROM a_table GROUP BY DateOnly;

যদিও আমি মনে করি না যে এটির পারফরম্যান্সে কোনও পার্থক্য আসবে, তবে এটি একটু পরিষ্কার।


1
আপনি কি নিশ্চিত যে দ্বিতীয়টি কাজ করে? এসকিউএল সার্ভারে, এটি ব্যর্থ হয় এবং এটি একটি ভাল কারণে ব্যর্থ হয়। আমি আশা করব এটি অন্য কোথাওও ব্যর্থ হবে। আপনি কি নিশ্চিত করতে পারেন যে মাইএসকিউএল আসলে এই কোয়েরিটি পরিচালনা করে?
তোমালাক

1
আমি এটি চেষ্টা করেছি এবং এটি ঠিক আছে works মাইএসকিউএল গ্রুপ দ্বারা আরও অনুমোদনযোগ্য এবং এটি আপনাকে দ্বিগুণ নয় এমন একটি কোয়েরি লিখতে বিশ্বাস করে।
বিল কারভিন

তথ্যের জন্য ধন্যবাদ। আমি সিদ্ধান্ত নিতে পারছি না এটি ভাল জিনিস কিনা না তবে এটি মাইএসকিউএল সম্পর্কে আমার মতামত অনুসারে পুরোপুরি ফিট করে। একটি প্রযুক্তিগত পিওভি থেকে - এটি কীভাবে কাজ করার কথা? আমি কেবল কল্পনা করতে পারি যে ক্যোয়ার পার্সার প্রকৃত অভিব্যক্তি দিয়ে GROUP BY ধারাটিতে উপনামটিকে প্রতিস্থাপন করে।
টমলক

17
এটি একটি পারফরম্যান্স ফাঁদ! মনে রাখবেন যে এই জাতীয় ফাংশন ব্যবহার করে - DATE () আপনাকে এই কলামে সূচকগুলি উত্সাহ দেওয়ার অনুমতি দেয় না।
কামিল বেদনারজ

আমি প্রথমটি ব্যবহার করেছি এবং এটি একটি কবজির মতো কাজ করেছে। এই টিপটির জন্য ধন্যবাদ
হেলেন নীলি

20

আমি খুঁজে পেয়েছি যে মাস এবং বছর অনুযায়ী আমার গ্রুপিং করা দরকার তাই উপরের দু'টিই আমার পক্ষে কাজ করেনি। পরিবর্তে আমি তারিখ_ফর্ম্যাট ব্যবহার করেছি

SELECT date
FROM blog 
GROUP BY DATE_FORMAT(date, "%m-%y")
ORDER BY YEAR(date) DESC, MONTH(date) DESC 

2
ক্যোয়ারীটি অর্ডার থেকে বাইরে
জেডজেএস

18

বা:

SELECT SUM(foo), DATE(mydate) mydate FROM a_table GROUP BY mydate;

আরও দক্ষ (আমি মনে করি।) কারণ আপনাকে সারিতে প্রতিবার দুবার মাইডেট লাগাতে হবে না।


7
মাইএসকিউএল দুইবার রূপান্তরটি চালিয়ে গেলে আমি খুব অবাক হব। তালিকা অনুসারে গোষ্ঠীতে কেবলমাত্র সামগ্রিক ফাংশন এবং এক্সপ্রেশনগুলি নির্বাচিত বিবৃতি দ্বারা গ্রুপে অনুমোদিত। ইঞ্জিনটি ইতিমধ্যে দুটি এক্সপ্রেশন একইরকম তা জানতে হবে।
টিএমডিয়ান

1
@ টিএমডিয়ান, 'তালিকা অনুসারে গ্রুপে কেবলমাত্র সামগ্রিক ফাংশন এবং এক্সপ্রেশনগুলিকে নির্বাচনের বিবৃতি দিয়ে গ্রুপে অনুমতি দেওয়া হয়েছে' - আপনি কী সহজ শব্দে ব্যাখ্যা করতে পারবেন?
ইসতিয়াক আহমেদ

9
SELECT SUM(No), HOUR(dateofissue) 
FROM tablename 
WHERE dateofissue>='2011-07-30' 
GROUP BY HOUR(dateofissue)

এটি একটি নির্দিষ্ট দিন থেকে যোগ করে ঘন্টা দেবে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.