با استفاده از تابع BIT_COUNT در MySQL، یک پرسوجو بنویسید که برای هر سطر جدول numbers با ستون value مقدار اصلی و تعداد بیتهای 1 در نمایش باینری آن را نمایش دهد و نتایج را بر اساس تعداد بیتهای 1 به صورت نزولی مرتب کند.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:55 0.0
از تابع BIT_COUNT(value) برای شمارش بیتهای 1 در نمایش باینری یک عدد استفاده کنید؛ مثلاً SELECT value, BIT_COUNT(value) AS ones FROM numbers ORDER BY ones DESC; که در آن میتوانید از alias برای ستون شمارش و از ORDER BY برای مرتبسازی استفاده کنید. برای فیلتر کردن نتایج نمونه از WHERE BIT_COUNT(value) > n بهره ببرید و توجه کنید برای مقادیر غیرمنفی نتیجه مستقیم و قابلفهمتری دارد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
BIT_COUNT مقدارهای باینری را میشمارد و برای هر سطر ستون value و تعداد بیتهای 1 را نشان میدهد. اگر مقدارهای منفی دارید، نتیجه ممکن است ناواضح باشد چون بیتهای 1 در نمایش دو's complement محاسبه میشود؛ بهتر است value را به UNSIGNED تبدیل کنید مثل BIT_COUNT(CAST(value AS UNSIGNED)) یا تنها از مقادیر غیرمنفی استفاده کنید. برای مرتبسازی از ORDER BY ones DESC استفاده کنید و به alias مانند ones توجه کنید. همچنین میتوانید با WHERE value >= 0 AND BIT_COUNT(CAST(value AS UNSIGNED)) > n نتایج مورد نظر را فیلتر کنید.
گزارش