🚀 ¡Una pequeña ayuda para Analistas de Datos! 🚀

Author Image

Brian Estévez LinkedIn

Blog

Como analista de datos, sé lo desafiante que puede ser trabajar con grandes volúmenes de información y encontrar formas eficientes de manejar y analizar los datos. Por eso, quiero ofrecerles un pequeño código que puede ser de utilidad en ciertos escenarios.

El siguiente script está diseñado para identificar y seleccionar tablas en una base de datos que contienen más de 10 filas donde exista una columna con el nombre 'Amount'. Esto puede ser útil cuando necesitas realizar análisis específicos o depurar conjuntos de datos extensos.


DECLARE cursorRow CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

DECLARE @tableName nvarchar(100)
DECLARE @query nvarchar(max)

IF OBJECT_ID('tempdb..#tables') IS NOT NULL
    DROP TABLE #tables

CREATE TABLE #tables(tablename varchar(100))

OPEN cursorRow
FETCH NEXT FROM cursorRow INTO @tableName

WHILE @@FETCH_STATUS = 0
BEGIN
    -- Verifica si la columna 'Amount' existe en la tabla
    IF EXISTS (
        SELECT 1 
        FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_NAME = @tableName AND COLUMN_NAME = 'Amount'
    )
    BEGIN
        -- Construye la consulta para contar las filas con la columna 'Amount'
        SET @query = N'
            IF (SELECT COUNT(*) FROM [' + @tableName + ']) > 10
            BEGIN
                INSERT INTO #tables (tablename) VALUES (''' + @tableName + ''')
            END
        '
        EXEC sp_executesql @query
    END

    FETCH NEXT FROM cursorRow INTO @tableName
END

CLOSE cursorRow
DEALLOCATE cursorRow

SELECT * FROM #tables ORDER BY tablename
DROP TABLE #tables

También te dejo por aquí un código que simplemente lista todas aquellas tablas que tienen más de 10 filas.


DECLARE cursorRow CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

DECLARE @tableName nvarchar(100)
DECLARE @query nvarchar(max)

IF OBJECT_ID('tempdb..#tables') IS NOT NULL
    DROP TABLE #tables

CREATE TABLE #tables(tablename varchar(100))

OPEN cursorRow
FETCH NEXT FROM cursorRow INTO @tableName

DECLARE @count INT

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @query = 'SELECT @count = COUNT(*) FROM [' + @tableName + ']'
    EXEC sp_executesql @query, N'@count int out', @count OUT

    IF @count > 10
    BEGIN
        INSERT INTO #tables (tablename) VALUES (@tableName)
    END

    FETCH NEXT FROM cursorRow INTO @tableName
END

CLOSE cursorRow
DEALLOCATE cursorRow

SELECT * FROM #tables ORDER BY tablename
DROP TABLE #tables

Puedes usar este código como punto de partida y adaptarlo según tus necesidades. ¡Espero que te sea de utilidad!