Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Berat hamming/jumlah populasi di T-SQL

Anda dapat menggunakan tabel helper dengan bobot Hamming yang telah dihitung sebelumnya untuk angka kecil, seperti byte, lalu membagi nilainya sesuai dengan itu, bergabung ke tabel helper dan mendapatkan jumlah bobot Hamming parsial sebagai bobot nilai Hamming:

-- define Hamming weight helper table
DECLARE @hwtally TABLE (byte tinyint, hw int);
INSERT INTO @hwtally (byte, hw) VALUES (0, 0);
INSERT INTO @hwtally (byte, hw) SELECT   1 - byte, 1 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT   3 - byte, 2 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT   7 - byte, 3 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  15 - byte, 4 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  31 - byte, 5 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT  63 - byte, 6 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT 127 - byte, 7 - hw FROM @hwtally;
INSERT INTO @hwtally (byte, hw) SELECT 255 - byte, 8 - hw FROM @hwtally;

-- calculate
WITH split AS (
  SELECT SUBSTRING(@value, number, 1) AS byte
  FROM master.dbo.spt_values
  WHERE type = 'P' AND number BETWEEN 1 AND LEN(@value)
)
SELECT
  Value = @value,
  HammingWeight = SUM(t.hw)
FROM split s
  INNER JOIN @hwtally t ON s.byte = t.byte


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menanyakan bidang DATETIME hanya menggunakan tanggal di Microsoft SQL Server?

  2. Bagaimana saya bisa mendapatkan 50% terbawah dari kueri pemilihan di SQL server?

  3. Perubahan penting untuk Acara yang Diperpanjang di SQL Server 2012

  4. Bagaimana cara Streaming data dari/ke bidang SQL Server BLOB?

  5. Pencarian SSIS tidak berurusan dengan NULL seperti yang dikatakan dokumen seharusnya