Is it an integer, a string, or a decimal?
Pyth, 33 bytes (39 without packed string)

@_c."at%¸Ã`9hàãáÊ"7.x/`MsB+vz0z0


Some bytes are stripped due to Markdown. Official code and test suite.

Without packed string:

@_c"integerdecimalstring"7.x/`MsB+vz0z0


It passes all of above test cases. Basically, to check if a string is a integer or decimal, it checks whether the string can be evaluated as a python literal (v), and if so, if you can add 0 to it and covert it back to its string representation, and get the input string. If so, it's an integer or a decimal. If you can also cast it to an int and still get the original string back, it's an integer.